久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java - JDK8 謂詞函數(shù)接口(Predicate)源碼疑問(wèn)?

瀏覽:108日期:2023-10-26 17:28:55

問(wèn)題描述

函數(shù)接口中有一個(gè) and() 方法,源碼如下

default Predicate<T> and(Predicate<? super T> other) { Objects.requireNonNull(other); return (t) -> test(t) && other.test(t);}

另外,test()源碼如下

boolean test(T t);

疑問(wèn)就是為什么 &&與boolean類(lèi)型值做邏輯運(yùn)算可以返回一個(gè)謂詞對(duì)象???

問(wèn)題解答

回答1:

我不知道什么叫謂詞對(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);};回答2:

返回的不是boolean, 而是(t) -> { return true|false; }, 表示返回一個(gè)functional interface, 這個(gè)functional interface是什么根據(jù)上下文確定, 只要是接受參數(shù)是1個(gè)并且返回值是bool都可以, 在Predicate中就是functional interface自己, 因?yàn)榉椒ㄒ?guī)定了返回值是Predicate.

回答3:

@捏造的信仰 和 @YaTou 都說(shuō)了,返回的是一個(gè) Lambda,符合 Predicate<T> 的定義。

我只想說(shuō),Predicate 為什么會(huì)翻譯成“謂詞”,雖然它有“謂語(yǔ)”這個(gè)意思,但是在這里用的是它的另一個(gè)意思“斷言,斷定(自然語(yǔ)言中用斷定比較好懂,但開(kāi)發(fā)技術(shù)書(shū)一般稱(chēng)為斷言)”,用于判斷某個(gè)東西,得到 true 或 false 的結(jié)果——也就是斷定為真,或斷定為假

回答4:

確實(shí)源碼是沒(méi)有問(wèn)題的,是我自己現(xiàn)在入為主了,將 (t) -> test(t)當(dāng)做一個(gè)整體了,其實(shí)應(yīng)該 test(t) && other.test(t)是一個(gè)整體,謝謝 @捏造的信仰 和 @YaTou 的回答以及邊城大大的提醒

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 吴旗县| 江安县| 景谷| 宝兴县| 哈巴河县| 略阳县| 图木舒克市| 乐昌市| 资兴市| 永泰县| 二手房| 桂林市| 凤阳县| 寻甸| 洛川县| 永州市| 华坪县| 壶关县| 扎囊县| 乌拉特后旗| 民权县| 淳化县| 赣州市| 长寿区| 瓮安县| 延吉市| 诸城市| 北碚区| 曲阜市| 许昌市| 紫金县| 梅州市| 枣阳市| 黄浦区| 朝阳市| 清苑县| 图木舒克市| 克拉玛依市| 邵阳县| 胶州市| 鄯善县|