Supplier示例
Supplier示例
在Java 8中,Supplier是一个函数接口,不需要接收参数,返回一个结果
@FunctionalInterface
public interface Supplier<T> {T get();
}
Supplier
下面的示例用Supplier,返回当前时间
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.function.Supplier;public class Java8Supplier1 {private static final DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");public static void main(String[] args) {Supplier<LocalDateTime> s = () -> LocalDateTime.now();LocalDateTime time = s.get();System.out.println(time);Supplier<String> s1 = () -> dtf.format(LocalDateTime.now());String time2 = s1.get();System.out.println(time2);}
}
输出
2020-03-02T16:10:49.281223
2020-03-02 16:10:49
返回Supplier
import java.util.ArrayList;
import java.util.List;
import java.util.function.Supplier;public class Java8Supplier2<T> {public static void main(String[] args) {Java8Supplier2<String> obj = new Java8Supplier2();List<String> list = obj.supplier().get();}public Supplier<List<T>> supplier() {// lambda// return () -> new ArrayList<>();// constructor referencereturn ArrayList::new;}
}
工厂
返回Developer对象的简单工厂
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.function.Supplier;public class Java8Supplier3 {public static void main(String[] args) {Developer obj = factory(Developer::new);System.out.println(obj);Developer obj2 = factory(() -> new Developer("mkyong"));System.out.println(obj2);}public static Developer factory(Supplier<? extends Developer> s) {Developer developer = s.get();if (developer.getName() == null || "".equals(developer.getName())) {developer.setName("default");}developer.setSalary(BigDecimal.ONE);developer.setStart(LocalDate.of(2017, 8, 8));return developer;}
}
Developer.java
import java.math.BigDecimal;
import java.time.LocalDate;public class Developer {String name;BigDecimal salary;LocalDate start;// for factory(Developer::new);public Developer() {}// for factory(() -> new Developer("mkyong"));public Developer(String name) {this.name = name;}// get, set, constructor, toString//...
}
输出
Developer{name='default', salary=1, start=2017-08-08}
Developer{name='mkyong', salary=1, start=2017-08-08}
Supplier示例相关推荐
- supplier java8_Java 8之 Supplier示例
通过解读源码,可以发现Supplier 在Java 8中,是一个功能接口,内置的一个函数式接口,可以用来创建新的对象,有别于关键字 new:它不带任何参数并返回结果. Supplier.java @F ...
- 【Java 8 新特性】Java Supplier示例
Java Supplier是一个功能接口,代表结果的提供者. Supplier的功能方法是get(). 一个Supplier可以通过lambda表达式.方法引用或默认构造函数来实例化. Supplie ...
- Lambda表达式常用代码示例
Lambda表达式常用代码示例 2017-10-24 目录 1 Lambda表达式是什么 2 Lambda表达式语法 3 函数式接口是什么 3.1 常用函数式接口 4 Lambdas和Stream ...
- Supplier接口
目录 一.Supplier接口源码 二.Supplier示例 三.其他Supplier接口 一.Supplier接口源码 public interface Supplier<T> {/** ...
- Java之CompletableFuture异步、组合计算基本用法
CompletableFuture是Java8新增的Api,该类实现了Future和ComplateStage两个接口,提供了强大的Future扩展功能,可以简化异步编程的复杂性,提供了函数编程的能力 ...
- Java 8 的 Optional 类抛异常
Java 8 的 Optional 类抛异常 本文我们介绍当Optional类为空时如何抛自定义异常. Optional.orElseThrow 简单描述,如果Optional值存在,则isPrese ...
- 答题卡的计分方式_如何建立信用风险模型和记分卡
答题卡的计分方式 We are all aware of, and keep track of, our credit scores, don't we? That all-important num ...
- java steam_Java 8 Steam 例子整理
为什么需要Steam Java 8 中的Steam是对集合 (Collection) 对象功能的增强, 他专注于对集合对象进行各种非常便利,高效的聚合操作(aggregate operation), ...
- java Supplier接口与示例
目录 一.supplier普通使用 示例代码1: 示例代码2: 二.supplier在工厂模式中使用 三. Supplier 扩展类 Java 8 中的 Supplier 是一个函数接口,无参数,返回 ...
最新文章
- java怎么创建二进制文件_Java:如何编写二进制文件?
- jQuery Event对象的属性和方法
- 第3周实践项目3 求集合并集
- 云原生乘风者联合征文活动——说出你和「阿里云云原生」的故事
- django+ajax+表格加载,如何使用ajax在Django-admin表格内联中读取/写入输入字段?
- 服务器与客户端渲染(AngularJS与服务器端MVC)
- 前端学习(175):弹窗
- MySQL的timestamp字段可以使用的范围是多少
- mac 安装laravel Valet环境
- 中文论文万能句型_干货|SCI论文写作的万能句型~
- struts2中常用Result类型(type)的用法
- 传统方法做分割 解析种子cues
- html表白树代码程序怎么调,抖音表白弹窗vbs代码怎么制作 表白树特效程序代码教程详细介绍...
- VB6程序实现XP或者WIN7风格
- 数据分析师笔试刷题题库(2020最新版)
- 说说 SpringMVC 工作原理
- MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
- D. Count GCD
- c罗python可视化分析_鸟枪换炮,利用python3对球员做大数据降维(因子分析得分),为C罗找到合格僚机...
- FAERIE QVEENE 仙后节选