Lambda -- 04JDK8函数包

JDK8新增加了一个包,java.util.function,这个包下所有的接口都是函数式接口,都是为了引入lambda表达式而设计的。

Lambda表达式的一般用法:作为一个《行为值》对象,当作实参传入某个方法。


Lambda表达式的入参:单入参
作用 函数式接口

抽象方法

Lambda表达式

方法签名

Lambda形态

默认方法:(柯里化思想)

调用该方法得到另一个函数

消费 Comsumer<T> void accept(T t); (T)-> void

andThen(Consumer<T> after){ }

计算 Function<T, R> R apply(T t); (T)-> R

compose(Function<V, T> before){ }

andThen(Function<R, V> after){ }

static <T> Function<T, T> identity() {
        return t -> t;
}

条件 Predicate<T> boolean test(T t); (T)-> boolean

与 and(Predicate<T> other)

或 or(Predicate<T> other)

非 negate()

工厂 Supplier<T> T get(); ( )-> T  

一元

操作

UnaryOperator<T>

extends

Function<T,T>

T apply(T t); (T)-> T  

Lambda表达式的入参:双入参
作用 函数式接口

抽象方法

Lambda表达式

方法签名

Lambda形态

默认方法:(柯里化思想)

调用该方法得到另一个函数

消费 BiConsumer<T, U> void accept(T t, U u); (T,U)-> void  
计算 BiFunction<T, U, R> R apply(T t, U u); (T,U)-> R  
条件 BiPredicate<T, U> boolean test(T t, U u); (T,U)-> boolean  

两元

操作

BinaryOperator<T>

extends

BiFunction<T,T,T>

T apply(T t, T u); (T,T)-> T  

其它函数式接口(不在java.util.function包下)
作用 函数式接口

抽象方法

Lambda表达式

方法签名

Lambda形态

默认方法:(柯里化思想)

调用该方法得到另一个函数

比较

java.util.

Comparator<T>

int compare(T o1, T o2)
(T,T)-> int  
运行

java.lang.

Runnable

void run()
( )-> void  

凡是你写的lambda表达式,通过java能自动推导出符合以上函数式接口中的抽象方法签名的,就不用另行自己新定义函数式接口,直接套用即可。

猜你喜欢

转载自blog.csdn.net/mmlz00/article/details/87605187
今日推荐