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 使用相关推荐

  1. Supplier JAVA_Java基础学习之函数式编程Supplier接口(JDK8)

    前言 今天带大家领略一下Supplier接口大道至简的魅力. 1.源码 @FunctionalInterface public interface Supplier { /*** Gets a res ...

  2. Supplier JAVA_使用Supplier Java 8进行缓存

    好的,让我们以较小的步骤重写代码,转向更老式,冗长的Java. 也许这使得理解起来更简单. 第一步:摆脱lambda: public static Supplier memoize(final Sup ...

  3. Supplier JAVA_「supplier」java1.8之supplier理解 - seo实验室

    supplier supplier也是是用来创建对象的,但是不同于传统的创建对象语法:new,看下面代码: public class TestSupplier { private int age; T ...

  4. 面试又挂了,你理解了 Java 8 的 Consumer、Supplier、Predicate和Function吗?

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 >>广而告之:打卡有奖活动火热进行中,快来参与吧,来了就有奖 今天我们还讲讲Consumer.Supplier ...

  5. Java8之Consumer、Supplier、Predicate和Function攻略

    今天我们还讲讲Consumer.Supplier.Predicate.Function这几个接口的用法,在 Java8 的用法当中,这几个接口虽然没有明目张胆的使用,但是,却是润物细无声的.为什么这么 ...

  6. java8 supplier 接口

    Supplier 接口 Supplier 接口是一个供给型的接口,其实,说白了就是一个容器,可以用来存储数据,然后可以供其他方法使用的这么一个接口 *** Supplier接口测试,supplier相 ...

  7. java 接口函数_Java函数式接口Supplier接口实例详解

    这篇文章主要介绍了Java函数式接口Supplier接口实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 JDK提供了大量常用的函数式接口以丰 ...

  8. supplier java8_Java 8之 Supplier示例

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

  9. java supplier接口_Java函数式接口Supplier接口实例详解

    这篇文章主要介绍了Java函数式接口Supplier接口实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 JDK提供了大量常用的函数式接口以丰 ...

最新文章

  1. 卷积神经网络基础:(6)卷积神经网络原理
  2. ng1和ng2的部分对比----angular2系列(四)
  3. 量子计算技术的研究现状与趋势
  4. 2020年安徽赛区智能车竞赛有关事项通知(草案)
  5. 美团全链路压测自动化实践
  6. union一个有趣的应用
  7. A review of 3D/2D registration methods for image-guided interventions(1)
  8. oracle数据库表的导入导出cmd命令大全
  9. 磁盘与目录的容量(转)
  10. ztree插件的使用
  11. 关于服务器虚化的优势,vmware虚化优势.docx
  12. linux 环境变量详解,linux环境变量实例详解
  13. python Linux系统信息
  14. 程序员不满薪资拒绝offer,HR怒称:估计你一辈子就是个程序员了!
  15. c语言错误spawning,C语言一直出现Error spawning cl.exe的解决办法
  16. Webpack支持.vue文件的打包
  17. 3D数字孪生大屏怎么做?你需要了解这款数据可视化软件
  18. 暗通道理论详解及的Python实现
  19. 【无标题】外汇符合挖坟啊喝咖啡卡机
  20. 公主救骑士---地下城游戏_leetcode

热门文章

  1. 暴风影音3.11.06.09手动去广告方法 【转】
  2. 探索AI如何应用在ERP系统物料需求分析中
  3. Android端如何获取手机当前的网络状态,比如wifi还是3G, 还是2G, 电信还是联通,还是移动
  4. BZOJ1415 聪聪与可可 - 期望dp
  5. 被面试官侮辱后,我决定通宵研究JVM!
  6. 读书笔记 - 读 《乌合之众》 古斯塔夫-勒庞
  7. 51单片机——单片机基础知识
  8. GrapeCity Documents for Word[GcWord]
  9. DTOJ #3880. 灌水
  10. PDF格式文件转换教程