本帖最后由 陈叶_cy 于 2018-8-24 20:05 编辑
函数式接口 1. 概念:有且仅有一个抽象方法的接口,适用于函数式编程场景的接口,代替匿名内部类方式 (默认方法,静态方法,私有方法,与java.lang.Object类中定义相同的抽象方法,都不算作抽象方法)
@FunctionalInterface的作用
在接口的上面使用,检测当前的接口是否为函数式接口
2、函数式编程
使用Lambda延迟执行的特性优化日志
使用Lambda表达式作为方法参数
使用Lambda表达式作为方法返回值
3、常用函数式接口
Supplier生产型函数式接口
java.util.function.Supplier<T>:生产型函数式接口
抽象方法:T get():用于获取一个对象或值。获取的类型和获取方式由编写Lambda实现
Consumer消费型函数式接口
java.util.function.Consumer<T>:消费型函数式接口
抽象方法:void accept(T t):用于使用一个对象或值。编写Lambda实现
默认方法:default Consumer<T> andThen(Consumer<? super T> after):
拼接两个Consumer接口的Lambda对象实现连续操作,谁写前面,谁先消费
Predicate条件判断函数式接口
java.util.function.Predicate<T>:条件判断函数式接口
抽象方法:boolean test<T t>:判断参数传递的对象。编写Lambda实现
默认方法:default Predicate<T> and(Predicate<? suprt T> other):与
default Predicate<T> and(Predicate<? super T> other):或
default Predicate<T> negate():非,取相反结果
Function根据一个T类型的数据 转换为 一个R类型的数据
T为前置条件,也就是输入(input)的类型
R为后置条件,也就是返回结果(result)的类型
抽象方法:R apply(T t):将T转换为R
默认方法:default <V> Function<T, V> andThen(Function<? super R, ? extends V> after):拼接多个Function转换
|
|