【发布时间】:2018-07-20 15:00:45
【问题描述】:
我知道这可能是关于 SO 的一个非常基本的问题,但我想知道 Java8 中的 Predicate 和 Function 接口有什么区别?
Predicate<String> predicateTest = (s)-> s.length() > 5;
System.out.println(predicateTest.test("Predicate"));
Function<String, Boolean> functionTest = str -> str.length()> 5;
System.out.println(functionTest.apply("Function"));
在我的示例中,两者都返回true。唯一的问题是调用方式不同?
【问题讨论】:
-
一个
Predicate只是一个返回Boolean的Function。换句话说,Predicate<T>是Function<T, Boolean>。但是Predicate返回一个boolean所以没有继承关系。 -
@BoristheSpider nitpick,它是
boolean而不是Boolean -
@Eugene 只是整理一下
-
嗯,这是根本的区别。
Predicate函数的计算结果可能为true或false,仅此而已。Function<…,Boolean>可能返回Boolean.TRUE、Boolean.FALSE、anotherBooleaninstance 代表true或false或null。
标签: java function java-8 predicate