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

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

如何將 Kotlin lambda 傳遞給 Java Supply 參數(shù)?

如何將 Kotlin lambda 傳遞給 Java Supply 參數(shù)?

長風(fēng)秋雁 2023-07-19 17:01:55
我將我的項目遷移到 Kotlin,這個階段 Java 和 Kotlin 之間有很多交互。在下面的示例中,我需要傳遞一個實現(xiàn) Java Supply 接口的函數(shù)。java.util.concurrent.CompletableFuture.supplyAsync<Int>({ -> 3 }, executor)CompletableFuture.supplyAsync({ 3 }, executor)IntelJ 顯示錯誤:Type mismatch.Required: Supplier<Int!>!Found: () -> Int我找到了一個使用幫助程序類的解決方法,但它不是內(nèi)聯(lián)解決方案。class Help : Supplier<Int> { fun get() = 3 }supplyAsync(Help(), executor)
查看完整描述

1 回答

?
PIPIONE

TA貢獻(xiàn)1829條經(jīng)驗 獲得超9個贊

這將起作用:

CompletableFuture.supplyAsync({?3?},?executor::execute)

注意這兩個簽名是

public?static?<U>?supplyAsync(supplier:?Supplier<U>,?executor:?Executor):?CompletableFuture<U>
public?static?<U>?supplyAsync(supplier:?()?->?U,?executor:?(Runnable)?->?Unit):?CompletableFuture<U>

也就是說,如果您想傳入 lambda,執(zhí)行它的對象必須是方法引用(而不是實例Executor)。

Kotlin 允許您調(diào)用采用 SAM(功能接口)參數(shù)并以適當(dāng)?shù)?Kotlin 函數(shù)作為參數(shù)的方法。然而,這要么全有,要么全無。您可以為所有 SAM 參數(shù)傳遞一個 Kotlin 函數(shù),也可以不傳遞一個 Kotlin 函數(shù)。這解釋了為什么您最初采用的方法無法編譯。這不是 Java API 的特定方法,而是適用于 Java 類上定義的所有方法。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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