我正在做静态 util 方法,它返回带有空可选的完整未来:
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
}
}
为了提高效率,我想返回相同的已完成常量实例CompletableFuture
- EMPTY_FUTCompletableFuture<Optional<T>>
,但由于无界通配符而无法将其转换为。
当然我想为任何类型调用这个完成的未来方法,与Optional.empty()和CompletableFuture.completedFuture(U)几乎相同
如何将具有无界通配符的泛型转换为特定类型?有可能吗?