第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

我認(rèn)為即使謂詞無(wú)效,Stream.filter() 也不會(huì)顯示編譯時(shí)錯(cuò)誤

我認(rèn)為即使謂詞無(wú)效,Stream.filter() 也不會(huì)顯示編譯時(shí)錯(cuò)誤

慕萊塢森 2023-07-19 16:34:46
在下面的代碼中,我有這一行:stream.filter(Data::isEven); 我正在使用 afilter()并且 afilter()接受Predicate接口作為參數(shù)。我們都知道Predicate有一種帶有簽名的方法: public boolean test(T t); 它接受一個(gè)參數(shù)并返回一個(gè)布爾值。我的理解是,isEven()不接受參數(shù)的方法不是有效的謂詞,因?yàn)榕ctest()方法不同,它不接受任何參數(shù),那么為什么我的代碼沒(méi)有顯示編譯時(shí)錯(cuò)誤?import java.util.stream.Stream;public class Main App {    public static void main(String args[]) {        Stream<Data> stream =                Stream.of(new Data(4), new Data(1));        stream.filter(Data::isEven); // should throw compile error but doesn't    }}class Data{    int i;    public Data(int i) {        this.i=i;    }    public boolean isEven() {        return i%2==0;    }}
查看完整描述

3 回答

?
慕姐8265434

TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊

問(wèn)題是,這Data::isEven是一個(gè)相當(dāng)于data -> data.isEven()predicate 的方法引用:

Predicate<Data>?predicate?=?data?->?data.isEven();
//?is?the?same?as
Predicate<Data>?predicate=?Data::isEven;

這在JLS 15.13

ExpressionName實(shí)例方法(第 15.12.4.1 節(jié))的目標(biāo)引用可以通過(guò)使用、 aPrimary或 的方法引用表達(dá)式來(lái)提供,super也可以稍后在調(diào)用方法時(shí)提供。

....

方法引用表達(dá)式的求值會(huì)生成函數(shù)接口類型的實(shí)例(第 9.8 節(jié))。方法引用求值不會(huì)導(dǎo)致對(duì)應(yīng)方法的執(zhí)行;相反,這可能會(huì)在稍后調(diào)用功能接口的適當(dāng)方法時(shí)發(fā)生。

在您的情況下是對(duì)對(duì)象實(shí)例方法的Data::isEven引用。isEvenData


查看完整回答
反對(duì) 回復(fù) 2023-07-19
?
繁星淼淼

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個(gè)贊

Data::isEven是一個(gè)Predicate.

要調(diào)用此方法,您必須傳遞值,例如:myData.isEven()。這本來(lái)就是一樣的isEven(myData)。因此,區(qū)別僅在于語(yǔ)法(參數(shù)在點(diǎn)之前或括號(hào)內(nèi)),但在語(yǔ)義上是相同的。

因此isEven是 aPredicate<Data>因?yàn)樗邮?code>Data并返回Boolean。


查看完整回答
反對(duì) 回復(fù) 2023-07-19
?
飲歌長(zhǎng)嘯

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊

正如其他人所寫(xiě),“Data::isEven”或“data -> data.isEven()”在這里是謂詞。當(dāng)我們調(diào)用此謂詞的測(cè)試方法時(shí),我們將數(shù)據(jù)實(shí)例(您有此類實(shí)例的流)作為參數(shù)傳遞到那里。



查看完整回答
反對(duì) 回復(fù) 2023-07-19
  • 3 回答
  • 0 關(guān)注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)