java提供的函数式接口放置在java.util.function 下
函数式接口 | 参数类型 | 返回类型 | 用途 |
Consumer<T> 消费型接口 | T | void | 对类型为T的对象应用操作,包含方法 : void accept(T t) |
Supplier<T> 供给型接口 | 无 | T | 返回类型为T的对象,包含方法 : T get() |
Function<T, R> 函数型接口 | T | R | 对类型为T的对象应用操作,并返回结果。结果是R类型的对象,包含方法 : R apply(T t) |
Predicate<T> 断定型接口 | T | boolean | 确定类型为T的对象是否满足某约束,并返回boolean 值。包含方法 : boolean test(T t) |
消费型接口
/**
* 01 Interface Consumer<T> 消费型接口 (一个入参,无返回值)
* 表示接受单个输入参数并且不返回结果的操作。 与大多数其他功能接口不同, Consumer预期通过副作用进行操作。
* 这是一个functional interface的功能方法是accept(Object) 。
*/
Consumer consumer =x-> System.out.println("hello "+x);
//控制台输出 “hello PangHao”
consumer.accept("PangHao");
供给型接口
/**
* 02 Interface Supplier<T> 供给型接口
* 代表结果供应商。
* 没有要求每次调用供应商时都会返回新的或不同的结果。
* 这是一个functional interface的功能方法是get() 。
*/
Supplier supplier=()->"返回一个object对象";
Object o = supplier.get();
// 输出 “返回一个object对象”
System.out.println(o);
函数型接口
/**
* 03 Interface Function<T,R> 函数型接口
* T - 函数输入的类型
* R - 函数结果的类型
* 表示接受一个参数并产生结果的函数。
* 这是一个functional interface的功能方法是apply(Object)
*/
Function function= x-> x+"加个字符串";
Object apply = function.apply(3);
//输出 “3加个字符串”
System.out.println(apply);
断定型接口
/**
* 04 Interface Predicate<T> 断定型接口
* 表示一个参数的谓词(布尔值函数)。
* 这是一个functional interface,其功能方法是test(Object)
* 确定类型为T的对象是否满足某约束,并返回boolean 值
*/
Predicate<Integer> predicate=(x)->x>5;
boolean test = predicate.test(9);
// 输出 true
System.out.println(test);