Разработка
Ваш первый Predicate
т.е.
Predicate<Boolean> test1 = p -> 1 == 1;
может быть представлен как
Predicate<Boolean> test1 = new Predicate<Boolean>() {
@Override
public boolean test(Boolean p) {
return true; // since 1==1 would ways be 'true'
}
};
Таким образом, независимо от того, какое значение вы передаете выше test
метод, он всегда будет возвращать только истину .
С другой стороны, второе Predicate
, то есть
Predicate<Boolean> test2 = p -> p == (1==1);
может быть представлено как
Predicate<Boolean> test2 = new Predicate<Boolean>() {
@Override
public boolean test(Boolean p) {
return p; // since 'p == true' would effectively be 'p'
}
};
Так что любое значение boolean
вы передадитевыше test
метода, он будет возвращен как .
И затем вы можете сопоставить, как метод test
соответствует каждому экземпляру test1
иtest2
анонимных классов вызываются и что должно быть вероятным выводом.