接口 | 参数 | 返回类型 |
---|---|---|
Predicate<T> | T | boolean |
Consumer<T> | T | void |
BiConsumer<T,R>//如Map.forEach()函数的参数 | (T,R) | void |
Funcation<T,R> | T | R |
Supplier<T> | None | T |
BinaryOperator<T> | (T,T) | T |
下面举个简单的例子:
public class Eight {
//new 一个函数式接口并重写,如果只是这样的话,Java8的优势也只是提供了现成的接口(以前是自己定义接口使用)
Predicate<Integer> predicate = new Predicate<Integer>() {
@Override
public boolean test(Integer integer) {
return integer==1;
}
};
Java 8 的lamba表达式配合函数式接口使用
static Predicate<Integer> predicate2 = (I->I==1);
//使用的时候将函数作为参数
static boolean testPredict(Predicate<Integer> predicate) {
return predicate.test(1);
}
public static void main(String[] args) {
System.out.println(testPredict(predicate2));
}
}
可以看出,通过使用函数式接口,将函数作为参数传递,大大简化重用了代码。