为了账号安全,请及时绑定邮箱和手机立即绑定

在 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 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信