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

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

當(dāng)需要 Completable<Void> 時(shí)返回 Completable<Object>

當(dāng)需要 Completable<Void> 時(shí)返回 Completable<Object>

拉丁的傳說 2023-08-16 16:37:19
我有以下人員類別:class Person {    String name;    String city;    public void setInfo(PersonInformation info) {//...};}我有一個(gè)來自此類的對象列表,我想使用返回 CompletableFuture 的方法異步查詢列表中每個(gè)項(xiàng)目的數(shù)據(jù)庫來填充它們的信息:List<CompletableFuture<Void>> populateInformation(List<Person> people) {     return people.stream().            .collect(groupingBy(p -> p.getLocation(), toList()))            .entrySet().stream()            .map(entry ->                     CompletableFuture.supplyAsync(                            () -> db.getPeopleInformation(entry.getKey())                    ).thenApply(infoList -> {                                     //do something with info list that doens't return anything                                    // apparently we HAVE to return null, as callanbles have to return a value                                    return null;                                }                    )            ).collect(Collectors.toList());}問題是我收到編譯錯(cuò)誤,因?yàn)榉椒ㄖ械拇a返回CompletableFuture<List<Object>>而不是CompletableFuture<List<Void>>. 我在這里做錯(cuò)了什么?我想過刪除return null,但正如我在評論中提到的,似乎在可調(diào)用中我們必須返回一個(gè)值,否則會出現(xiàn)另一個(gè)編譯錯(cuò)誤:Incompatible types: expected not void but the lambda body is a block that is not value-compatible
查看完整描述

2 回答

?
蕭十郎

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

thenApply方法返回類型為CompletableFuture<U>,這意味著返回 CompletableFuture 并帶有函數(shù)返回值

public?<U>?CompletableFuture<U>?thenApply(Function<??super?T,??extends?U>?fn)

返回一個(gè)新CompletionStage值,當(dāng)此階段正常完成時(shí),將使用此階段的結(jié)果作為所提供函數(shù)的參數(shù)來執(zhí)行該新值。有關(guān)異常完成的規(guī)則,請參閱 CompletionStage 文檔。

Type?Parameters:
U?-?the?function's?return?type

Parameters:
fn?-?the?function?to?use?to?compute?the?value?of?the?returned?CompletionStage

使用thenAccept方法返回 Void 類型的 CompletableFuture

public?CompletableFuture<Void>?thenAccept(Consumer<??super?T>?action)

返回一個(gè)新的 CompletionStage,當(dāng)該階段正常完成時(shí),將使用該階段的結(jié)果作為所提供操作的參數(shù)來執(zhí)行該階段。有關(guān)異常完成的規(guī)則,請參閱 CompletionStage 文檔。

Parameters:
action?-?the?action?to?perform?before?completing?the?returned?CompletionStage


查看完整回答
反對 回復(fù) 2023-08-16
?
搖曳的薔薇

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

您也可以通過兩種方式強(qiáng)制thenApply返回 a :CompletableFuture<Void>

  • 指定泛型類型參數(shù):

    ).<Void>thenApply(infoList?->?{
  • 轉(zhuǎn)換返回值:

    return?(Void)?null;

當(dāng)然,你可以兩者都做,但那是多余的。


查看完整回答
反對 回復(fù) 2023-08-16
  • 2 回答
  • 0 關(guān)注
  • 195 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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