函數接口中有一個 and() 方法,源碼如下
default Predicate<T> and(Predicate<? super T> other) {
Objects.requireNonNull(other);
return (t) -> test(t) && other.test(t);
}
另外,test()源碼如下
boolean test(T t);
疑問就是為什么 &&與boolean類型值做邏輯運算可以返回一個謂詞對象???
3 回答

MM們
TA貢獻1886條經驗 獲得超2個贊
我不知道什么叫謂詞對象,但 test(t) && other.test(t)
這就是一個普通的 boolean 表達式,返回的就是一個 boolean 的值,不是什么 “謂詞對象”。整條 return 語句實際上是下面語句的簡寫:
return (t) -> {
return test(t) && other.test(t);
};

一只甜甜圈
TA貢獻1836條經驗 獲得超5個贊
返回的不是boolean
, 而是(t) -> { return true|false; }
, 表示返回一個functional interface
, 這個functional interface
是什么根據上下文確定, 只要是接受參數是1
個并且返回值是bool
都可以, 在Predicate
中就是functional interface
自己, 因為方法規定了返回值是Predicate
.

侃侃無極
TA貢獻2051條經驗 獲得超10個贊
確實源碼是沒有問題的,是我自己現在入為主了,將 (t) -> test(t)
當做一個整體了,其實應該 test(t) && other.test(t)
是一個整體
添加回答
舉報
0/150
提交
取消