Supplier JAVA_Java 8 Supplier 使用
Java 8 Supplier 使用
在Java 8, Supplier是一个函数接口,它没有参数,返回了一个T.查了下字典,supplier被翻译成"供应商",那么它到底供应了啥呢,从代码上看,就是供应了一个任意对象T呗,下面我们去看看几个DEMO吧.
思考: 写JDK代码的大神们,为什么取名叫Supplier?为啥不叫Vendor或者Provider呢...我想了很久.
package java.util.function;
@FunctionalInterface
public interface Supplier {
T get();
}
1、使用Supplier打印字符串
package com.cattles.function;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.function.Supplier;
/**
* @author cattle - 稻草鸟人
* @date 2020/3/22 下午12:56
*/
public class Java8Supplier1 {
private static final DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
public static void main(String[] args) {
// print simple string
Supplier supplier = () -> "cattle";
System.out.println(supplier.get());
// print date time
Supplier time = () -> LocalDateTime.now();
System.out.println(time.get());
Supplier s = () -> dtf.format(time.get());
System.out.println(s.get());
}
}
输出:
cattle
2020-03-22T13:45:53.926364
2020-03-22 13:45:53
2、返回一个Supplier
下面我们创建一个简单的工厂方法返回一个Developer 对象
package com.cattles.function;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.function.Supplier;
/**
* @author cattle - 稻草鸟人
* @date 2020/3/22 下午12:56
*/
public class Java8Supplier3 {
public static void main(String[] args) {
Developer developer = factory(Developer::new);
System.out.println(developer);
Developer developer1 = factory(()-> new Developer("tony"));
System.out.println(developer1);
}
public static Developer factory(Supplier extends Developer> supplier) {
Developer developer = supplier.get();
if(Optional.ofNullable(developer.getName()).isEmpty()) {
developer.setName("cattle");
}
//可怜的人啊,薪水是zero
developer.setSalary(BigDecimal.ZERO);
//没日没夜干活的码农啊
developer.setTitle("Coder");
return developer;
}
static class Developer {
/**
* 姓名
*/
private String name;
/**
* 职位
*/
private String title;
/**
* 薪水
*/
private BigDecimal salary;
public Developer(String name) {
this.name = name;
}
// 省略 gettter setter toString 方法
}
}
看看结果:
Developer{name='cattle', title='Coder', salary=0}
Developer{name='tony', title='Coder', salary=0}
Supplier JAVA_Java 8 Supplier 使用相关推荐
- Supplier JAVA_Java基础学习之函数式编程Supplier接口(JDK8)
前言 今天带大家领略一下Supplier接口大道至简的魅力. 1.源码 @FunctionalInterface public interface Supplier { /*** Gets a res ...
- Supplier JAVA_使用Supplier Java 8进行缓存
好的,让我们以较小的步骤重写代码,转向更老式,冗长的Java. 也许这使得理解起来更简单. 第一步:摆脱lambda: public static Supplier memoize(final Sup ...
- Supplier JAVA_「supplier」java1.8之supplier理解 - seo实验室
supplier supplier也是是用来创建对象的,但是不同于传统的创建对象语法:new,看下面代码: public class TestSupplier { private int age; T ...
- 面试又挂了,你理解了 Java 8 的 Consumer、Supplier、Predicate和Function吗?
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 >>广而告之:打卡有奖活动火热进行中,快来参与吧,来了就有奖 今天我们还讲讲Consumer.Supplier ...
- Java8之Consumer、Supplier、Predicate和Function攻略
今天我们还讲讲Consumer.Supplier.Predicate.Function这几个接口的用法,在 Java8 的用法当中,这几个接口虽然没有明目张胆的使用,但是,却是润物细无声的.为什么这么 ...
- java8 supplier 接口
Supplier 接口 Supplier 接口是一个供给型的接口,其实,说白了就是一个容器,可以用来存储数据,然后可以供其他方法使用的这么一个接口 *** Supplier接口测试,supplier相 ...
- java 接口函数_Java函数式接口Supplier接口实例详解
这篇文章主要介绍了Java函数式接口Supplier接口实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 JDK提供了大量常用的函数式接口以丰 ...
- supplier java8_Java 8之 Supplier示例
通过解读源码,可以发现Supplier 在Java 8中,是一个功能接口,内置的一个函数式接口,可以用来创建新的对象,有别于关键字 new:它不带任何参数并返回结果. Supplier.java @F ...
- java supplier接口_Java函数式接口Supplier接口实例详解
这篇文章主要介绍了Java函数式接口Supplier接口实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 JDK提供了大量常用的函数式接口以丰 ...
最新文章
- 卷积神经网络基础:(6)卷积神经网络原理
- ng1和ng2的部分对比----angular2系列(四)
- 量子计算技术的研究现状与趋势
- 2020年安徽赛区智能车竞赛有关事项通知(草案)
- 美团全链路压测自动化实践
- union一个有趣的应用
- A review of 3D/2D registration methods for image-guided interventions(1)
- oracle数据库表的导入导出cmd命令大全
- 磁盘与目录的容量(转)
- ztree插件的使用
- 关于服务器虚化的优势,vmware虚化优势.docx
- linux 环境变量详解,linux环境变量实例详解
- python Linux系统信息
- 程序员不满薪资拒绝offer,HR怒称:估计你一辈子就是个程序员了!
- c语言错误spawning,C语言一直出现Error spawning cl.exe的解决办法
- Webpack支持.vue文件的打包
- 3D数字孪生大屏怎么做?你需要了解这款数据可视化软件
- 暗通道理论详解及的Python实现
- 【无标题】外汇符合挖坟啊喝咖啡卡机
- 公主救骑士---地下城游戏_leetcode
热门文章
- 暴风影音3.11.06.09手动去广告方法 【转】
- 探索AI如何应用在ERP系统物料需求分析中
- Android端如何获取手机当前的网络状态,比如wifi还是3G, 还是2G, 电信还是联通,还是移动
- BZOJ1415 聪聪与可可 - 期望dp
- 被面试官侮辱后,我决定通宵研究JVM!
- 读书笔记 - 读 《乌合之众》 古斯塔夫-勒庞
- 51单片机——单片机基础知识
- GrapeCity Documents for Word[GcWord]
- DTOJ #3880. 灌水
- PDF格式文件转换教程