av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

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

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

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

問題描述

函數(shù)接口中有一個 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類型值做邏輯運算可以返回一個謂詞對象???

問題解答

回答1:

我不知道什么叫謂詞對象,但 test(t) && other.test(t) 這就是一個普通的 boolean 表達式,返回的就是一個 boolean 的值,不是什么 “謂詞對象”。整條 return 語句實際上是下面語句的簡寫:

return (t) -> { return test(t) && other.test(t);};回答2:

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

回答3:

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

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

回答4:

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

標簽: java
相關(guān)文章:
主站蜘蛛池模板: 午夜99| 中文字幕亚洲欧美日韩在线不卡 | 四色成人av永久网址 | 亚洲综合婷婷 | 成人午夜激情 | 国产成人精品网站 | 国产精品免费看 | 国产成人免费视频网站高清观看视频 | 国产精品视频一二三区 | 国产在线不卡 | 久久久久国产一区二区三区不卡 | 日韩精品在线观看一区二区三区 | 国产无人区一区二区三区 | 中文字幕观看 | 久久久免费精品 | 欧美精品在欧美一区二区少妇 | 亚洲一区二区视频在线播放 | 免费一级黄色录像 | 久久天天综合 | 夜夜草导航| 国产网站久久 | 日韩毛片在线视频 | 99福利在线观看 | 成人av高清 | 电影午夜精品一区二区三区 | 久久成人18免费网站 | 成人av一区| 国产一区二区精品在线 | 国产在线一区二区 | 91成人在线 | 亚洲精品一区中文字幕乱码 | 一级做a爰片性色毛片16美国 | 在线免费91 | 国产成人免费 | 久久久国产一区二区三区 | 日本激情视频在线播放 | 欧美在线一区二区三区 | 日韩成人在线免费视频 | 在线超碰| 成人欧美一区二区三区在线播放 | 夜夜摸天天操 |