use*_*791 3 java lambda operator-precedence java-8
我看到谓词and
和or
谓词的方法,返回类型是谓词,而在return语句中,有一个lambda表达式执行逻辑和(或)与布尔值.那么当逻辑和(或)有一个Lamdba表达式的操作数和另一个boolean操作数时,如何计算return语句.为什么这个有效?
以下是and
方法的代码java.util.function.Predicate
:
default Predicate<T> and(Predicate<? super T> other) {
Objects.requireNonNull(other);
return (t) -> test(t) && other.test(t);
}
Run Code Online (Sandbox Code Playgroud)
Stu*_*rks 10
在这个声明中:
return (t) -> test(t) && other.test(t);
Run Code Online (Sandbox Code Playgroud)
的&&
操作者具有比更高的优先级->
操作,所以表达式被解析为,如果:
return (t) -> (test(t) && other.test(t));
Run Code Online (Sandbox Code Playgroud)
因此,这将返回lambda表达式本身,这是该谓词的test
方法与其他谓词的test
方法的逻辑AND .