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


相关推荐

  • 电子商务系统开发(笔记一)[通俗易懂]

    电子商务系统开发(笔记一)[通俗易懂]第一章 ASP.NET概述1.www的基础知识 1.1 计算机网络 ①地理位置不同的 ②具有独立功能的 ③多台计算机及其外部设备 ④通过通信线路连接起来 ⑤在 网络操作系统,网络管理软件及网络通信协议的管理和协调下 ⑥实现资源共享和信息传递的计算机系统 1.2 …

    2022年8月18日
    11
  • 网页文字不可以复制_html5实现复制粘贴

    网页文字不可以复制_html5实现复制粘贴大家在上网的时候是否曾经遇到过网页文字无法复制的情况呢?为什么网页文字无法复制呢?或者问如何把不能复制的网页文字复制下来呢?其实,网页文字不能复制原因大部分是网页的制作者为了防止网页内容被被人盗用而设置了复制限制,在网页中嵌入了Javascript语言,通过编程的手段屏蔽了复制功能。下面小编给大家分享下如何把被限制复制的网页文字复制下来。本方法以IE浏览器为例子,打开IE浏览器链接到需要访问的网页…

    2022年10月13日
    6
  • 记一次压测问题定位:connection reset by peer,TCP三次握手后服务端发送RST

    记一次压测问题定位:connection reset by peer,TCP三次握手后服务端发送RST问题描述这两天用Go做一个比较简单的task:后端有HTTPServer和TCPServer。客户端通过http接入到HTTPServer,HTTPServer通过RPC将请求发送到TCPServer,所有的业务逻辑都由TCPServer处理。压测:自己的mac电脑(CPU:Inteli7,4核,2.7GHz。内存:16G),硬件够用。客户端用Go编写,1个goruntine启…

    2022年10月1日
    3
  • python入门:if和else的基本用法

    python入门:if和else的基本用法1#!/usr/bin/envpython2#-*-coding:utf-8-*-3#2.X用raw_input,3.X用input4#if和else的基本用法5name=

    2022年7月5日
    24
  • python开发mbus程序_Mbus 2019(水表校验程序)V2.1 最新版

    python开发mbus程序_Mbus 2019(水表校验程序)V2.1 最新版Mbus2019(水表校验程序)是一款功能强大的水表等设备的测试辅助工具。Mbus2019(水表校验程序)选择串口号选择波特率及效验位,打开串口,可读取信息,真实有效可靠,可读取写入表计地址,发送标准188读计量数据、控制码等命令,可设置时间,获取权限等。特色1、Mbus使用方便,可以免费帮助用户测试水表2、提供命令设置功能,使用标准的188命令控制读取方案3、控制码也可以在软件设置,控制码长…

    2022年10月15日
    2
  • 架构学习——业务架构图

    架构学习——业务架构图一、什么是业务架构图?业务架构图,顾名思义就是对于产品的业务架构进行梳理和整合,它表达的是业务系统之间的关系,帮助开发人员梳理业务结构。二、为什么要画业务架构图?业务架构图帮我们更好的从宏观的角度整体性的审查我们的产品帮助用户和需求方从业务角度出发更好的了解我们的产品功能有了业务架构图我们可以更好的对目前已有的功能和以后计划开发的功能进行抽象、设计、开发三、如何画业务架构图?站在巨人的肩膀上我们要学会站在巨人的肩膀上学习,先看看一些比较牛的公司他们是怎么画的业务架构图,借鉴他人的画法和思

    2022年10月7日
    2

发表回复

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

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