Tao*_*itz 8 java lambda predicate java-8 functional-interface
为什么以下代码返回Predicate<String>而不是boolean?
我的理解是!s.isEmpty()这里的检查是违反谓词boolean test(T t);的boolean.这里的返回类型是.
所以在我的lambda中,我的nonEmptyStringPredicate不是类型boolean吗?显然,它不是,我只是想了解它为什么不是.
Predicate<String> nonEmptyStringPredicate = (String s) -> !s.isEmpty();
Run Code Online (Sandbox Code Playgroud)
A Predicate在这种情况下得到一个String参数并返回一个boolean.如果我们不将它写为lambda,它将如下所示:
Predicate<String> somePredicate = new Predicate<String>() {
@Override
public boolean test(String string) {
return !string.isEmpty();
}
};
Run Code Online (Sandbox Code Playgroud)
如果你真的愿意从 中得到一个布尔值Predicate,你可以使用它的test方法:
Predicate<String> nonEmptyStringPredicate = s -> !s.isEmpty();
boolean val = nonEmptyStringPredicate.test("any"); // true
Run Code Online (Sandbox Code Playgroud)
Predicate另一方面,它只是一个FunctionalInterface,您使用 lambda 表达式表示。