首页 > 编程知识 正文

supplier定义,supplier type

时间:2023-05-04 01:27:34 阅读:250406 作者:2034

Supplier示例

在Java 8中,Supplier是一个函数接口,不需要接收参数,返回一个结果

@FunctionalInterfacepublic 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); }}

kkdz

2020-03-02T16:10:49.2812232020-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 reference return 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 //...}

kkdz

Developer{name='default', salary=1, start=2017-08-08}Developer{name='mkyong', salary=1, start=2017-08-08}
win7电脑文件夹如何加密

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。