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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • HTML中的空格字符_dw空格代码怎么打

    HTML中的空格字符_dw空格代码怎么打在学习插入空格字符代码书写方法之前,我们要知道,html代码的空格字符,在浏览器中,总会被压缩为一个字符!也就是说,你在html文本中输入多个空格,但在浏览器中,只会保留显示一个字符,其余的都将被浏览器删除。再打个比如,你在html中输入了8个空格字符,如下图所示:在显示之前,浏览器会删除其余7个,而只保留一个空格字符,如下图所示:也就是说,无论你输入多少个空格字符,在浏览器中显示的永远和上图一样…

    2022年9月2日
    3
  • SQL Server数据仓库的基础架构规划

    SQL Server数据仓库的基础架构规划

    2021年11月27日
    36
  • python中dtype什么意思_NumPy Python中的数据类型对象(dtype)

    python中dtype什么意思_NumPy Python中的数据类型对象(dtype)每个ndarray都有一个关联的数据类型(dtype)对象。此数据类型对象(dtype)告知我们有关数组布局的信息。这意味着它为我们提供了有关以下信息:数据类型(整数,浮点数,Python对象等)数据大小(字节数)数据的字节顺序(小端或大端)ndarray的值存储在缓冲区中,可以将其视为内存字节的连续块。因此,如何解释这些字节由dtype对象给出。1,构造数据类型(dtype)对象:数据类型对象…

    2022年6月5日
    106
  • C语言排序(冒泡排序、选择排序、插入排序和快速排序)

    C语言排序(冒泡排序、选择排序、插入排序和快速排序)C语言排序(冒泡排序、选择排序、插入排序和快速排序)C语言排序什么是排序?1.冒泡排序基本思想主要思路:动态示例demo2.选择排序基本思想主要思路动态示例demo3.插入排序基本思想主要思路动态示例demo4.快速排序基本思想主要思路动态示例demoC语言排序什么是排序?就是将无序的变成有序的1.冒泡排序基本思想在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,

    2022年6月25日
    20
  • 编译链接过程中出现“无法解析的外部符号”,原因及解决办法总结

    编译链接过程中出现“无法解析的外部符号”,原因及解决办法总结1、错误为:errorLNK2019:无法解析的外部符号___report_rangecheckfailure,该符号在函数_OBJ_create_objects中被引用 原因:__report_rangecheckfailure  是用来检查堆栈缓存溢出的,如果编译的时候打开GS(projectproperty–》Configurationproperties–》c/c++…

    2022年4月19日
    60
  • 使用nginx后如何在web应用中获取用户ip及原理解释

    使用nginx后如何在web应用中获取用户ip及原理解释

    2021年9月3日
    81

发表回复

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

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