目录
原始类型特化
JAVA8 为Predicate、Consumer、Suppler 等函数式接口带来了一个专门的版本,以便在输入和输出时都是基本类型时避免自动装箱的操作
IntPredicate evenNumbers = (int i) -> i % 2 == 0; //无装箱
Predicate<Integer> evenNumbers2 = (Integer i) -> i % 2 == 0; //有装箱
函数描述符
函数式接口的抽象方法的签名基本就是Lambda 表达式的签名。我们将这种抽象方法叫作函数描述符。例如,Runnable 接口可以看作一个什么也不接受什么也不返回(void) 的函数的签名。举另外一个例子,(Apple,Apple) -> int 代表接受两个Apple 作为参数且返回int的函数
函数式接口 | 函数描述符 | 原始类型特化 |
---|---|---|
Predicate |
T -> boolen | IntPredicate、DoublePredicate、LongPredicate |
Consumer |
T -> void | IntConsumer、DoubleConsumer、LongConsumer |
Function<T,R> | T -> R | IntFunction |
Supplier |
() -> T | BooleanSupplier、 IntSupplier、 DoubleSupplier、 LongSupplier |
UnaryOperator |
T -> T | IntUnaryOperator、 LongUnaryOperator、 DoubleUnaryOperator |
BinaryOperator |
(T,T) -> T | IntBianryOperator、 LongBianryOperator、 DoubleBianryOperator |
BiPredicate<L,R> | (L,R) -> boolean | |
BiConsumer<T,U> | <T,U> -> void | ObjIntConsumer |
BiFuntion<T,U,R> | <T,U> -> R | ToIntBiFunction<T,R> 、 ToLangBiFunction<T,R>、 ToDoubleBiFunction<T,R> |