函数式接口
有且只有一个抽象方法的接口;
java中函数式编程的体现就是Lambda;
格式:
修饰符 interface 接口名称 {
public abstract 返回值类型 方法名称(可选参数信息);
// 其他非抽象方法内容
}
@FunctionalInterface注解:
一旦使用这个注解,编译器会自动检测接口是否是一个函数式接口;
Lambda的延迟执行:
有些场景的代码执行后,结果不一定会被使用,从而造成性能浪费。而Lambda表达式是延迟执行的,这正好可以
作为解决方案,提升性能;
常用函数式接口
Supplier接口
T get() :生产型接口;
Consumer接口
void accept(T t):消费型接口;
默认方法:andThen(Consumer ).accept(参数) :多个消费型接口共同消费一个数据;
Predicate接口
boolean test(T t):数据类型判断型接口;
默认方法:and 与
默认方法:or 或
默认方法:negate 非
Function接口
R apply(T t):数据类型转换型接口;
默认方法:andThen, 用来进行组合操作