函数接口---supplier
函数接口—supplier
Metadata
title: 函数接口---supplier
date: 2023-02-21 08:42
tags:
- 行动阶段/完成
- 主题场景/程序
- 笔记空间/KnowladgeSpace/ProgramSpace/BasicsSpace
- 细化主题/Java/函数式编程
categories:
- Java
keywords:
- Java
description: Supplier 接口被称为生产型接口,指定接口的泛型是什么类型,那么接口中的get方法就会生产什么类型数据。
函数接口—supplier
java.util.function.supplier<T>
简介
Supplier<T>
接口被称为生产型接口,指定接口的泛型是什么类型,那么接口中的get方法就会生产什么类型数据。
Supplier:包含一个无参的方法,所以是可以被@FunctionalInterface
标识
T get()
:获取结果- 该方法不需要参数,它会按照某种实现逻辑(有Lambda表达式实现)返回一个数据
package java.util.function;
/**
* Represents a supplier of results.
*
* <p>There is no requirement that a new or distinct result be returned each
* time the supplier is invoked.
*
* <p>This is a <a href="package-summary.html">functional interface</a>
* whose functional method is {@link #get()}.
*
* @param <T> the type of results supplied by this supplier
*
* @since 1.8
*/
@FunctionalInterface
public interface Supplier<T> {
/**
* Gets a result.
*
* @return a result
*/
T get();
}
作用
supplier一般作用是用来产生一个对象(调用一次get方法,返回一次T所代表的对象)
supplier用来创建对象的,它和常规new对象不同:
比如我们有个Person类,如果:
1、Person p1 = new Person();
这里会马上创建一个对象
2、Supplier<Persion> s1 = Persion::new;
这里不会创建对象
Persion p1 = s1.get();
这里会创建一个对象,而且会返回Persion对象
Persion p1 = s1.get();
继续创建一个Persion对象
示例
/*
Supplier接口
Supplier<T>:包含一个无参的方法
T get():获取结果
该方法不需要参数,它会按照某种实现逻辑(有Lambda表达式实现)返回一个数据
Supplier<T>接口也称为生产型接口,如果我们指定了接口的泛型是什么类型,那么接口中的get方法就会产生什么类型数据供我们使用
*/
public class SupplierDemo {
public static void main(String[] args) {
/*
//匿名类写法
Supplier<String> s= new Supplier<String>() {
@Override
public String get() {
return "iKun";
}
};
System.out.println(getString(s));
*/
//Lambda表达式写法
System.out.println( getString(()->"iKun"));
}
//定义一个方法
private static String getString(Supplier<String> s){
return s.get();
}
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 蝶梦庄生!
评论