java Supplier接口与示例
目录
- 一、supplier普通使用
- 示例代码1:
- 示例代码2:
- 二、supplier在工厂模式中使用
- 三、 Supplier 扩展类
Java 8 中的 Supplier
是一个函数接口,无参数,返回值类型为泛型 T。Supplier
的使用比较简单,使用场景也比较单一。
通俗的来说Supplier相当于一个放东西的容器,你可以在这个容器里放一些没有入参的代码,然后返回T类型,当调用get()方法的时候才会去执行容器里的代码得到返回值。
一、supplier普通使用
示例代码1:
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.function.Supplier;public class MainServer {public static void main(String[] args) throws InterruptedException {Supplier<String> supplier = () -> {LocalDateTime localDateTime = LocalDateTime.now();DateTimeFormatter f1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");System.out.println("Supplier测试");return localDateTime.format(f1);};System.out.println("开始");System.out.println("当前时间:" + supplier.get());Thread.sleep(1000L);System.out.println("再次获取当前时间:" + supplier.get());}
}
输出:
开始
Supplier测试
当前时间:2022-04-20 09:39:24
Supplier测试
再次获取当前时间:2022-04-20 09:39:25
示例代码2:
import java.util.function.Supplier;public class MainServer {public static void main(String[] args) {Supplier<Double> randomValue = () -> Math.random();System.out.println("获取随机数:" + randomValue.get());System.out.println("再次获取随机数:" + randomValue.get());}
}
输出:
获取随机数:0.702892997077614
再次获取随机数:0.3871863980392035
二、supplier在工厂模式中使用
import java.util.function.Supplier;public class MainServer {public static void main(String[] args) {Dog dog1 = dogFactory(() -> new Dog("哈士奇"));Dog dog2 = dogFactory(() -> new Dog("牧羊犬"));System.out.println(dog1);System.out.println(dog2);}public static Dog dogFactory(Supplier<? extends Dog> supplier) {Dog dog = supplier.get();dog.setAge(1);return dog;}
}
public class Dog {private final String name;private Integer age;public Dog(String name) {this.name = name;}public Dog(String name, Integer age) {this.name = name;this.age = age;}public String getName() {return name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "Dog{" + "name='" + name + ", age=" + age + '}';}
}
输出:
Dog{name='哈士奇, age=1}
Dog{name='牧羊犬, age=1}
三、 Supplier 扩展类
在 Java 8 中,为了方便 Supplier
的使用,提供了指定类型的 Supplier
,有 BooleanSupplier
, DoubleSupplier
, IntSupplier
, LongSupplier
。
import java.util.Random;
import java.util.function.IntSupplier;public class MainServer {public static void main(String[] args) {IntSupplier intSupplier = () -> new Random().nextInt(10);System.out.println(intSupplier.getAsInt());System.out.println(intSupplier.getAsInt());}
}
输出:
0
9
参考:
Supplier Interface in Java with Examples
Java 8 Supplier 函数接口
java1.8之supplier理解
java Supplier接口与示例相关推荐
- java supplier接口_Java函数式接口Supplier接口实例详解
这篇文章主要介绍了Java函数式接口Supplier接口实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 JDK提供了大量常用的函数式接口以丰 ...
- java Consumer接口与示例
目录 一.consumer使用 示例代码1: 示例代码2: 示例代码3: 示例代码4: 二.BiConsumer使用 示例代码一: 示例代码二: 三.其他和Consumer相关的接口 Java 8 中 ...
- java 接口函数_Java函数式接口Supplier接口实例详解
这篇文章主要介绍了Java函数式接口Supplier接口实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 JDK提供了大量常用的函数式接口以丰 ...
- 【Java 8 新特性】Java Supplier示例
Java Supplier是一个功能接口,代表结果的提供者. Supplier的功能方法是get(). 一个Supplier可以通过lambda表达式.方法引用或默认构造函数来实例化. Supplie ...
- java supplier t_在Java中如何使用lambda表达式中的Supplier T接口?
Supplier接口是一个预定义的接口,表示结果的提供者.它是使用lambda表达式.方法引用或默认构造函数实例化的.Supplier接口的函数方法是get()方法.此接口属于java.util.fu ...
- java请求接口示例_Java 8:功能接口示例
java请求接口示例 为了支持Java 8中的lambda表达式,他们引入了Functional Interfaces. 具有单一抽象方法的接口可以称为功能接口. Runnable,Comparato ...
- java请求接口示例_用示例解释Java接口
java请求接口示例 介面 (Interfaces) Interface in Java is a bit like the Class, but with a significant differe ...
- java小程序详解_微信小程序登录Java后台接口(详解,附示例代码)
首先看一下官方文档 地址:微信小程序官方文档API登录接口 我们先对官方给的时序图进行简单的分析 1.当小程序调用wx.login()时,会获得一个code(临时登录凭证),然后我们需要用wx.req ...
- 【java笔记】常用函数式接口(1):Supplier接口
[java笔记]常用接口(2):Consumer接口_m0_52043808的博客-CSDN博客 [java笔记]常用函数式接口(3):Predicate接口_m0_52043808的博客-CSDN博 ...
最新文章
- 十 	mybatis逆向工程
- vc使用opencv库 读取图像
- show status用法
- SAP Fiori Elements 公开课第二单元学习笔记:Fiori Elements 架构
- 浅述WinForm多线程编程与Control.Invoke的应用
- java错误1601解决方法,求助解决错误
- Debian11安装VLC Media Player视频播放器
- 2020-django目录
- 详解Angular开发中的登陆与身份验证
- java 从后往前截取_java 字符串截取的实例详解
- oracle的成本核算,ORACLE-EBS-最新成本管理手册
- 我们不曾向这个世界的庸俗低头
- C++搜索算法和曼哈顿距离之最少连通代价
- 第四篇:服务发现机制
- 2022-06-25 网工进阶(十一)IS-IS-三大表(邻居表、路由表、链路状态数据库表)、LSP、CSNP、PSNP、LSP的同步过程
- 27英寸显示器多大 长宽多少厘米
- 求职必备||程序员的优秀简历都是这样来的
- 鸿蒙系统 智能手表,wear os智能手表和鸿蒙系统智能手表对比
- Qter 遇见的大牛!
- 激战2电信服务器哪个最多,《激战2》电信一区服务器玩家实力排行榜
热门文章
- 高性能HTTP加速器Varnish-3.0.3搭建、配置及优化步骤
- vis.js 头部日期实现国际化
- 万年历java课程设计报告_java《万年历系统》课程设计报告附源码.doc
- Google 重叠实验框架:更多,更好,更快地实验(Google A/B实验论文)
- 考虑灾害响应的应急设施预定位选址
- 各浏览器版本对HTTPS连接的TLS1.1版本的支持情况
- HNUST 2204 买水果
- Android.mk介绍(一)
- pywt?PyWavelets?
- 阿铭Linux_域名学习笔记20190114.md