目录
Java8在新增了Lambda表达式支持的同时,也提供了很多函数式接口。
所以当某个类需要传入比较简单的策略实现时,我们可以直接使用这些内置的函数式接口。
内置函数式接口分四种类型
- 函数式 (Function) —— 有入参,也有返回值
- 断言式 (Predicate) —— 有入参,且返回值为布尔型
- 生产式 (Supplier) —— 无入参,有返回值
- 消费式 (Consumer) —— 有入参,无返回值
可以看出,函数的类型是根据入参以及返回值来区分的。
函数式 (Function)
加工输入值,并返回加工后的结果
public static void functionTest(Function<String, String> function) {
String res = function.apply("abc");
System.out.println(res);
}
断言式 (Predicate)
对输入值做一个判断,返回判断的结果
public static void predicateTest(Predicate<String>predicate) {
boolean abc = predicate.test("abc");
System.out.println(abc);
boolean def = predicate.test("def");
System.out.println(def);
}
生产式 (Supplier)
只出不进
public static void supplierTest(Supplier<String> supplier) {
System.out.println(supplier.get());
}
消费式 (Consumer)
只进不出
public static void consumerTest(Consumer<String> consumer) {
consumer.accept("abc");
}
测试类
public static void main(String[] args) {
functionTest( a -> a + "def");
predicateTest(a -> "abc".equals(a));
supplierTest(() -> "abc");
consumerTest(a -> {
System.out.println("自己输出:" + a);
});
}