tis*_*sen 5 java lambda predicate java-8 functional-interface
我是Java 8的新手,我正试图解决为什么最后一次测试是错误的.
@Test
public void predicateTest() {
Predicate<Boolean> test1 = p -> 1 == 1;
Predicate<Boolean> test2 = p -> p == (1==1);
System.out.println("test1 - true: "+test1.test(true));
System.out.println("test1 - false: "+test1.test(false));
System.out.println("test2 - true: "+test2.test(true));
System.out.println("test2 - false: "+test2.test(false));
}
Run Code Online (Sandbox Code Playgroud)
输出:
test1 - true:true
test1 - false:true
test2 - true:true
test2 - false:false
你的第一个Predicate即
Predicate<Boolean> test1 = p -> 1 == 1;
Run Code Online (Sandbox Code Playgroud)
可以表示为
Predicate<Boolean> test1 = new Predicate<Boolean>() {
@Override
public boolean test(Boolean p) {
return true; // since 1==1 would ways be 'true'
}
};
Run Code Online (Sandbox Code Playgroud)
因此无论您传递给上述test方法的值是什么,它总是只返回true.
另一方面,第二个Predicate即
Predicate<Boolean> test2 = p -> p == (1==1);
Run Code Online (Sandbox Code Playgroud)
可以表示为
Predicate<Boolean> test2 = new Predicate<Boolean>() {
@Override
public boolean test(Boolean p) {
return p; // since 'p == true' would effectively be 'p'
}
};
Run Code Online (Sandbox Code Playgroud)
因此,无论boolean您传递给上述test方法的任何值,它都将按原样返回.
然后你就可以如何相互关联的方法test对应于每个实例test1和test2匿名类的调用,哪些应是可能的输出.
| 归档时间: |
|
| 查看次数: |
131 次 |
| 最近记录: |