接口中只能有一个需要被实现的方法,不是规定接口中只能有一个方法
**@FunctionalInterface
:**修饰函数式接口的,要求接口中的抽象方法只有一个,不是函数式接口会报错。
default
, 接口中被 default
修饰的方法会有默认实现,不是必须被实现的方法,所以不影响函数式接口的定义
四大函数式接口
Consumer<T>
消费型接口
传入一个参数,不返回值
@FunctionalInterface
public interface Consumer<T> {
void accept(T t);
}
Supplier<T>
供给型接口
无参数,返回一个值
@FunctionalInterface
public interface Supplier<T> {
T get();
}
Predicate<T>
谓词型接口
传入一个参数,并且返回一个 bool
值
@FunctionalInterface
public interface Predicate<T> {
boolean test(T t);
}
Function<T, R>
功能型接口
一个输入和一个输出
@FunctionalInterface
public interface Function<T, R> {
R apply(T t);
}
其他
java.util.function
中还有许多不同输入参数,不同输出的函数式接口,按需使用。