Es gibt eine and()
Methode in der Funktionsschnittstelle, der Quellcode lautet wie folgt
default Predicate<T> and(Predicate<? super T> other) {
Objects.requireNonNull(other);
return (t) -> test(t) && other.test(t);
}
Darüber hinaus test()
Der Quellcode lautet wie folgt
boolean test(T t);
Die Frage ist, warum &&
與boolean
Logische Operationen an Typwerten ein Pr?dikatobjekt zurückgeben k?nnen? ? ?
業(yè)精于勤,荒于嬉;行成于思,毀于隨。
我不知道什么叫謂詞對(duì)象,但 test(t) && other.test(t)
這就是一個(gè)普通的 boolean 表達(dá)式,返回的就是一個(gè) boolean 的值,不是什么 “謂詞對(duì)象”。整條 return 語(yǔ)句實(shí)際上是下面語(yǔ)句的簡(jiǎn)寫(xiě):
return (t) -> {
return test(t) && other.test(t);
};
返回的不是boolean
, 而是(t) -> { return true|false; }
, 表示返回一個(gè)functional interface
, 這個(gè)functional interface
是什么根據(jù)上下文確定, 只要是接受參數(shù)是1
個(gè)并且返回值是bool
都可以, 在Predicate
中就是functional interface
自己, 因?yàn)榉椒ㄒ?guī)定了返回值是Predicate
.
@捏造的信仰 和 @YaTou 都說(shuō)了,返回的是一個(gè) Lambda,符合 Predicate<T>
的定義。
我只想說(shuō),Predicate 為什么會(huì)翻譯成“謂詞”,雖然它有“謂語(yǔ)”這個(gè)意思,但是在這里用的是它的另一個(gè)意思“斷言,斷定(自然語(yǔ)言中用斷定比較好懂,但開(kāi)發(fā)技術(shù)書(shū)一般稱(chēng)為斷言)”,用于判斷某個(gè)東西,得到 true 或 false 的結(jié)果——也就是斷定為真,或斷定為假
確實(shí)源碼是沒(méi)有問(wèn)題的,是我自己現(xiàn)在入為主了,將 (t) -> test(t)
當(dāng)做一個(gè)整體了,其實(shí)應(yīng)該 test(t) && other.test(t)
是一個(gè)整體,謝謝 @捏造的信仰 和 @YaTou 的回答以及邊城大大的提醒