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


相关推荐

  • modelsim se 10.1a 下载与破解

    modelsim se 10.1a 下载与破解学HDL避免不了的要用到modelsim,遗憾的是至今也没怎么用,昨天下载了modelsim装上了,鼓捣破解鼓捣了一阵子。     我是一个软件控,除非是对就器件不支持或者有明显bug的一般都会尝试用最新版,觉得既然搞电子做嵌入式就得更得上潮流,能适应得了新环境。所以很多软件,哪怕是用的再顺的除了变化较大的新版也会毫不犹豫去尝试。好了,闲话不多说,看一下modelsim,modelsim

    2022年5月16日
    44
  • 三巨头是什么意思(腾讯财报)

    5月22日晚间,拼多多与阿里巴巴相继公布了财报,拼多多一季度营收同比增长44%,阿里营收则同比增22%,都好于市场预期。而从电商业务来看,阿里虽一直领先于京东与后来者拼多多,但由于家大业大,业务链分散,使得另外两家有了后来居上的机会,拼多多今天的财报中提及了其年度活跃用户已达到了6.28亿,京东近期也在物流方面频频发力,并在上周交出了一季度亮眼的财报,这使…

    2022年4月16日
    73
  • 小记录

    小记录

    2022年4月3日
    39
  • java时间计数_java计算方法耗时

    java时间计数_java计算方法耗时java时间计数

    2022年4月20日
    50
  • 【Maven学习】Maven打包生成普通jar包、可运行jar包、包含所有依赖的jar包

    【Maven学习】Maven打包生成普通jar包、可运行jar包、包含所有依赖的jar包使用maven构建工具可以将工程打包生成普通的jar包、可运行的jar包,也可以将所有依赖一起打包生成jar;一、普通的jar包普通的jar包只包含工程源码编译出的class文件以及资源文件,而不包含任何依赖;同时还包括pom文件,说明该包的依赖信息;在工程pom文件下这样写,可生成普通的jar包:jar或者,不写,因为packaging默认打包类型为

    2022年5月30日
    39
  • 为什么0xffffffff是-1?(计算机对整型的存储)[通俗易懂]

    为什么0xffffffff是-1?(计算机对整型的存储)[通俗易懂]一个数字在计算机中都是以二进制补码的形式存储的。先了解这句核心。。。我们认为中的int整型数值顺序java中int类型是4个字节,也就是32位,其中第一位是符号位,int数值的存储结构我们利用System.out.println(Integer.toBinaryString(Integer.MAX_VALUE));拿到int的最大值,是1111111111111111111111111111111,31个1,首位是0(代表正数,省略了)那我们给int的最大值+1,会发生什么呢?Sys

    2022年5月13日
    49

发表回复

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

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