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示例相关推荐

  1. supplier java8_Java 8之 Supplier示例

    通过解读源码,可以发现Supplier 在Java 8中,是一个功能接口,内置的一个函数式接口,可以用来创建新的对象,有别于关键字 new:它不带任何参数并返回结果. Supplier.java @F ...

  2. 【Java 8 新特性】Java Supplier示例

    Java Supplier是一个功能接口,代表结果的提供者. Supplier的功能方法是get(). 一个Supplier可以通过lambda表达式.方法引用或默认构造函数来实例化. Supplie ...

  3. Lambda表达式常用代码示例

    Lambda表达式常用代码示例 2017-10-24 目录 1 Lambda表达式是什么 2 Lambda表达式语法 3 函数式接口是什么   3.1 常用函数式接口 4 Lambdas和Stream ...

  4. Supplier接口

    目录 一.Supplier接口源码 二.Supplier示例 三.其他Supplier接口 一.Supplier接口源码 public interface Supplier<T> {/** ...

  5. Java之CompletableFuture异步、组合计算基本用法

    CompletableFuture是Java8新增的Api,该类实现了Future和ComplateStage两个接口,提供了强大的Future扩展功能,可以简化异步编程的复杂性,提供了函数编程的能力 ...

  6. Java 8 的 Optional 类抛异常

    Java 8 的 Optional 类抛异常 本文我们介绍当Optional类为空时如何抛自定义异常. Optional.orElseThrow 简单描述,如果Optional值存在,则isPrese ...

  7. 答题卡的计分方式_如何建立信用风险模型和记分卡

    答题卡的计分方式 We are all aware of, and keep track of, our credit scores, don't we? That all-important num ...

  8. java steam_Java 8 Steam 例子整理

    为什么需要Steam Java 8 中的Steam是对集合 (Collection) 对象功能的增强, 他专注于对集合对象进行各种非常便利,高效的聚合操作(aggregate operation), ...

  9. java Supplier接口与示例

    目录 一.supplier普通使用 示例代码1: 示例代码2: 二.supplier在工厂模式中使用 三. Supplier 扩展类 Java 8 中的 Supplier 是一个函数接口,无参数,返回 ...

最新文章

  1. java怎么创建二进制文件_Java:如何编写二进制文件?
  2. jQuery Event对象的属性和方法
  3. 第3周实践项目3 求集合并集
  4. 云原生乘风者联合征文活动——说出你和「阿里云云原生」的故事
  5. django+ajax+表格加载,如何使用ajax在Django-admin表格内联中读取/写入输入字段?
  6. 服务器与客户端渲染(AngularJS与服务器端MVC)
  7. 前端学习(175):弹窗
  8. MySQL的timestamp字段可以使用的范围是多少
  9. mac 安装laravel Valet环境
  10. 中文论文万能句型_干货|SCI论文写作的万能句型~
  11. struts2中常用Result类型(type)的用法
  12. 传统方法做分割 解析种子cues
  13. html表白树代码程序怎么调,抖音表白弹窗vbs代码怎么制作 表白树特效程序代码教程详细介绍...
  14. VB6程序实现XP或者WIN7风格
  15. 数据分析师笔试刷题题库(2020最新版)
  16. 说说 SpringMVC 工作原理
  17. MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
  18. D. Count GCD
  19. c罗python可视化分析_鸟枪换炮,利用python3对球员做大数据降维(因子分析得分),为C罗找到合格僚机...
  20. FAERIE QVEENE 仙后节选

热门文章

  1. 浅析移动互联网营销加盟的价值有哪些
  2. 提升工作效率的五款实用工具软件及其应用心得
  3. 【MacBookPro M1 安装Docker】
  4. 75道逻辑思维题 (转)
  5. 怎么节省PayPal收款手续费?
  6. mobx autoRun computed 你学会了吗?
  7. 实现USB转两个异步串口,USB总线的转接芯片
  8. 【codevs3369】膜拜
  9. 丹尼带你入坑无人机3 - 四轴配件简介
  10. “《正在爆发的互联网革命》——30余位互联网大腕一致推荐,3.5亿网民必看!”...