Java8:为什么lambda表达式可以做一个逻辑和(或)布尔值

use*_*791 3 java lambda operator-precedence java-8

我看到谓词andor谓词的方法,返回类型是谓词,而在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 .