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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

具有返回類型的消費者接口的 lambda 表達式

具有返回類型的消費者接口的 lambda 表達式

神不在的星期二 2023-07-28 16:52:12
我不太明白的是為什么 java 編譯器允許 lambda 表達式,例如s -> s.isEmpty()在消費者接口內(nèi)部。我嘗試過像s -> s.isEmpty()Consumer 接口那樣的 lambda 表達式,它可以正常工作。其他一些 lambda 表達式不起作用,因為它們返回一些內(nèi)容,例如s -> s.Consumer<String> cons1 = s -> s.isEmpty(); cons1.accept("abc");編譯并執(zhí)行沒有問題。所以我遇到的問題是,我認為 lambda 表達式總是s -> s.isEmpty()等價于s -> {return s.isEmpty()};,所以我期望編譯器給我一個錯誤,因為你不能boolean從消費者接口返回 a (或任何其他類型)。isEmpty()顯然,如果沒有 return 語句,并且該方法只是被調(diào)用而沒有實際返回值,則編譯器會將 lambda 表達式轉(zhuǎn)換為方法。那么問題是 return 何時添加到 lambda 表達式的主體中?這樣我就可以知道編譯器何時會給出編譯器錯誤以及原因。非常感謝你,如果我沒有很好地解釋自己,我很抱歉,我是新來的。
查看完整描述

2 回答

?
汪汪一只貓

TA貢獻1898條經(jīng)驗 獲得超8個贊

規(guī)范中明確定義,如果 lambda 的主體是語句表達式,如果返回類型為 void,則結(jié)果將被丟棄

15.27.3。Lambda 表達式的類型

如果 lambda 的主體是語句表達式(即允許單獨作為語句的表達式),則它與產(chǎn)生 void 的函數(shù)類型兼容;任何結(jié)果都會被簡單地丟棄。因此,例如,以下兩者都是合法的:

?//Predicate?has?a?boolean?result
???Predicate<String>?p?=?s?->?list.add(s);
???//?Consumer?has?a?void?result
???Consumer<String>?c?=?s?->?list.add(s);

一般來說, 形式的 lambda?() -> expr(其中 expr 是語句表達式)被解釋為 或() -> { return expr; },() -> { expr; }具體取決于目標類型。


查看完整回答
反對 回復 2023-07-28
?
小唯快跑啊

TA貢獻1863條經(jīng)驗 獲得超2個贊

中定義的單個抽象方法的返回類型定義了FunctionalInterfacelambda 的推斷方式。例如,Consumer<String>示例中的共享可以表示為匿名類,例如:


// Consumer<String> consumer = s -> s.isEmpty();

Consumer<String> consumer = new Consumer<String>() {

    @Override

    public void accept(String s) {

        s.isEmpty(); // treated as void here 

    }

};

表示為 a 的相同 lambda 表達式Predicate<String>可以轉(zhuǎn)換為匿名類,例如:


// Predicate<String> predicate = s -> s.isEmpty();

Predicate<String> predicate = new Predicate<String>() {

    @Override

    public boolean test(String s) {

        return s.isEmpty(); // returns boolean here

    }

};


查看完整回答
反對 回復 2023-07-28
  • 2 回答
  • 0 關(guān)注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

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