亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

在 CompletableFuture 中執行不同簽名的方法

在 CompletableFuture 中執行不同簽名的方法

忽然笑 2023-08-09 15:17:05
從下面的代碼中,我想foo3在. 的方法簽名無法更改。一種方法是進入,但這會破壞關注點分離。foo2foo1foo1foo3foo2@OverrideCompletableFuture<Integer> foo1(String str) {    return CompletableFuture.supplyAsync(() -> foo2(str));}Integer foo2(String str) {    return 0;}void foo3(String str) {    System.out.println("Done");}
查看完整描述

3 回答

?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

假設您只想調用foo3afterfoo2并返回foo2輸出,那么您可以這樣做:


return CompletableFuture.supplyAsync(() -> {

                Integer r = foo2(str);

                foo3("testing");

                return r;

            }

    );


查看完整回答
反對 回復 2023-08-09
?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

如果foo3call 應該是 的一部分foo1,那么這是一種方法:


CompletableFuture<Integer> foo1(String str) {

    return CompletableFuture.supplyAsync(() -> foo2(str))

            .thenApply(foo2Result -> {

                        foo3(str);

                        return foo2Result;

                    }

            );

}

或者如果你想調用它,在foo1調用的地方:


foo1(str).thenApply(result -> {

            foo3(str);

            return result;

        }

);


查看完整回答
反對 回復 2023-08-09
?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

你的意思是像

foo1(str).thenRun(() -> foo3(str);

foo1因為你似乎對的結果不感興趣。


查看完整回答
反對 回復 2023-08-09
  • 3 回答
  • 0 關注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號