函数式接口
- 只包含一个抽象方法的接口,称为函数式接口。
- 你可以通过Lambda表达式来创建该接口的对象。(若Lambda表达式抛出一个受检异常,那么该异常需要在目标接口的抽象方法上进行声明)
- 我们可以在任意函数式接口上使用@FunctionalInterface注解,这样做可以检查它是否是一个函数式接口,同时javadoc也会包含一条声明,说明这个接口是一个函数式接口。
消费型接口: Consumer
- accept(T t) 接受参数,执行方法
- andThen:执行完方法后,继续执行 andThen 参数方法
print.andThen(printPlusSelf).accept(10);
供给型接口: Supplier
T get()
函数型接口: Function<T, R>
R apply(T t)
apply: 传入一个T类型的参数,返回一个R类型的值
compose: accept获取到的参数,先执行compose里面的Function,再执行原Function
toString.compose(plusSelf).apply(10);
- andThen:与compose相反。先执行原Function,在执行andThen里面的Function。
断言型接口: Predicate
boolean test(T t)
test 测试test方法中输入参数是否满足接口中定义的lambda表达式
and 与逻辑运算符 && 一致。
negate:对结果取反后再输出
or: 与逻辑运算符 || 一致。
Function、Consumer、Supplier、Predicate 四个接口是一切函数式编程的基础。
其他进阶接口
todo