gpt4 book ai didi

java - 使用通配符转换常量泛型

转载 作者:搜寻专家 更新时间:2023-11-01 02:19:57 27 4
gpt4 key购买 nike

我正在执行静态 util 方法,该方法返回带有空可选的已完成的 future :

public class CompletableFutureUtils {

private static final CompletableFuture<Optional<?>> EMPTY_FUT = completedFuture(Optional.empty());

private static final Optional<?> EMPTY_OPT = Optional.empty();

@Nonnull
@SuppressWarnings("unchecked")
public static <T> CompletableFuture<Optional<T>> emptyOptionalCompletedFuture() {

// COMPILE ERROR: incompatible types: CompletableFuture<Optional<?>> cannot be converted to CompletableFuture<Optional<T>>
// return (CompletableFuture<Optional<T>>)EMPTY_FUT;

return completedFuture((Optional<T>)EMPTY_OPT); // works, but creates new instance every time
}
}

为了效率,我想返回相同的常量实例 completed CompletableFuture - EMPTY_FUT,但无法将其转换为 CompletableFuture<Optional<T>>因为无限通配符。

当然,我想为任何类型调用这个已完成的 future 方法,与 Optional.empty() 几乎相同和 CompletableFuture.completedFuture(U)

如何将带有无限通配符的泛型转换为特定类型?有可能吗?

最佳答案

首先丢弃 CompletableFuture 的类型,然后再次转换为您想要的类型,如下所示:

return (CompletableFuture<Optional<T>>) (CompletableFuture<?>) EMPTY_FUT;

关于java - 使用通配符转换常量泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48947431/

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