Supplier接口

Supplier接口目录一 Supplier 接口源码二 Supplier 示例三 其他 Supplier 接口一 Supplier 接口源码 publicinterf T Getsaresult returnaresul Tget Supplier 接口是一个供给型的接口 本质就是一个容器 可以用来存储数据 或者是产生数据的规则 然后可以供其 T

目录

一、Supplier接口源码

二、Supplier示例

三、其他Supplier接口

一、Supplier接口源码

public interface Supplier<T> { / * Gets a result. * * @return a result */ T get(); }

        Supplier接口是一个供给型的接口,本质就是一个容器,可以用来存储数据(或者是产生数据的规则),然后可以供其他方法使用的这么一个接口。

二、Supplier示例

        举例1:随机数获取

        例子中定义了返回100以内随机数的Supplier对象,每次想获取随机数时,就调用Supplier对象的get方法即可。在这个示例中,Supplier.get()等价于new Random().nextInt(100),只是看起来更简单。

public static void main(String[] args) { Supplier<Integer> supplier = new Supplier<Integer>() { @Override public Integer get() { return new Random().nextInt(100); } }; System.out.println(supplier.get()); System.out.println(supplier.get()); System.out.println(supplier.get()); }

Supplier接口 

          举例2:Supplier搭配Optional

          例子中,找到指定list中第一个小于100的数,没有的话就随机返回一个小于100的数。

 public static void main(String[] args) { Supplier<Integer> supplier = new Supplier<Integer>() { @Override public Integer get() { return new Random().nextInt(100); } }; List<Integer> integers = List.of(1000, 2000, 3000); Optional<Integer> optionalInteger = integers.stream().filter(val -> val < 100).findFirst(); Integer integer = optionalInteger.orElse(supplier.get()); System.out.println(integer); }

Supplier接口

        举例3:Supplier创建对象

        例子中,我们先定义了一个静态内部类Student,然后创建了一个Supplier来创建Student对象,看输出结果可知,每次调用Supplier.get方法时,都会创建一个新的Student对象(hashCode值不同)。

 static class Student { Student() { System.out.println("student init"); System.out.println("hashCode: " + hashCode()); } } public static void main(String[] args) { Supplier<Student> supplier = Student::new; System.out.println(supplier.get()); System.out.println(supplier.get()); System.out.println(supplier.get()); System.out.println(supplier.get()); System.out.println(supplier.get()); }

Supplier接口 

 

三、其他Supplier接口

        JDK里面提供了其他返回类型数据的Supplier:IntSupplier 、DoubleSupplier 、LongSupplier 、BooleanSupplier等。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233923.html原文链接:https://javaforall.net

(0)
上一篇 2025年6月11日 上午8:01
下一篇 2025年6月11日 上午8:22


相关推荐

  • 《托马斯微积分》阅读笔记1

    《托马斯微积分》阅读笔记1认识增量增量当平面上一个质点从一点移动到另一点 其坐标的纯改变或增量通过把终点坐标减去起点坐标而求得 增量的定义 如果一个质点从点 x1 y1 移动到 x2 y2 其坐标的增量为 x x2 x1 以及 y y2 y1 读作 delta 指差 注 增量是可以为正数 0 和负数的 例题 1 求增量 从 0 0 到 9 8 的增量为 x 9 0 9 y 8 0 8 从 3 1 到 3 9 的增量为 x 3 3 0 y 9 1 8 从

    2026年3月18日
    2
  • pycharm远程部署_远程连接服务器失败

    pycharm远程部署_远程连接服务器失败在这之前你要确保服务器上已经创建好虚拟环境你本地已经安装好pycharm1创建本地文件远程服务器上已经有一个文件了。现在你在本地创建一个同名文件。服务器上的虚拟环境为DrQA,所以我在本地新建一个DrQA空文件夹。2用pycharm打开空项目3配置服务器的解释器左上角File→Setting→projectxxx→pythoninterpreter点右上角的小齿轮,然后点add选择SSHInterpreter,然后在上边填上服务器的地址、usernam

    2022年8月25日
    8
  • Ubuntu 24.04 + Qt/C++ 最强AI开发组合:Qt Creator + Cursor + Qt AI Assistant 极致配置教程(无本地模型)

    Ubuntu 24.04 + Qt/C++ 最强AI开发组合:Qt Creator + Cursor + Qt AI Assistant 极致配置教程(无本地模型)

    2026年3月16日
    3
  • android sdk集合 下载,Android SDK下载列表(含海内下载)-下

    android sdk集合 下载,Android SDK下载列表(含海内下载)-下AndroidSDK下载列表(含国内下载)-下前一篇博客中借用了三位前辈的博客、里面是SDK的下载列表、当然、里面不可能是完整的、也有很多都没有收录、但是我们可以从那些已经收录了的链接里的命名习惯中可以知道我们想要下载的链接是什么当我们需要的版本不在那些下载列表中时、这就需要我们自己改下载链接了、举个例子:比如、平凡的世界这位前辈收录的下载android-sdk列表中:在AndroidSDK列…

    2022年7月19日
    43
  • Claude Opus 4.6 薅羊毛:量大管饱!Kiro 教程

    Claude Opus 4.6 薅羊毛:量大管饱!Kiro 教程

    2026年3月15日
    6
  • vs2019中scanf返回值被忽略_vs2017scanf

    vs2019中scanf返回值被忽略_vs2017scanf一、问题再现如下是笔者在学习数据结构中的二叉树时遇到的问题:报错警告:返回值被忽略:”scanf”。二、问题分析百度一下之后大致原因是:scanf()函数在读取时不检查边界,所以可能会造成内存泄漏。有一定的安全隐患。微软公司觉得其不安全,所以在VS编译器中提供了scanf_s()函数,这是VS编译器特有的函数。强制用户提升安全性,如果想要在VS中使用scanf()函数,则可以通过一下4中方法解决。三、解决方案1、把scanf改成:scanf_s把所有的scanf()改

    2025年6月8日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号