gpt4 book ai didi

Java : CompletableFuture 捕获

转载 作者:行者123 更新时间:2023-12-02 11:06:31 32 4
gpt4 key购买 nike

我有一个变量CompletableFuture<?> completableFuture 。我希望能够使用任何类型的对象来完成它。例如:completableFuture.complete(new String("Hello"))或者是其他东西。这是我的项目的设计要求。但我收到以下错误:complete
(capture<? extends java.lang.Object>)
in CompletableFuture cannot be applied
to
(java.lang.String[])

我知道这个问题与在 Java 中捕获通配符有关,但我在互联网上找不到可以帮助我解决此问题的明确解释的解决方案。

你能告诉我一种用任何对象完成我的 CompletableFuture 的方法吗?

最佳答案

您可以使用 CompletableFuture<Object> ,它将接受任何类型:

CompletableFuture<Object> completableFuture = ...;
completableFuture.complete(new Object());
completableFuture.complete("abc");
completableFuture.complete(new String[] { "abc" });
completableFuture.complete(null);
completableFuture.complete(new ArrayList<String>());

问题是 CompletableFuture<?>与许多具体的泛型类型兼容,例如 CompletableFuture<String> , CompletableFuture<String[]> 。这就是为什么编译器禁止像 completableFuture.complete(String[]) 这样的调用(可能会使用不兼容的类型调用 complete)。

另一种方法是将您的完整 future 声明为 CompletableFuture<? super Object> ,但没有多大意义,不是吗?

关于Java : CompletableFuture<? > 捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50921056/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com