方法引用导致原始类型编译器警告,但 lambda 不会
Method reference results in raw-type compiler warning, but lambda does not
鉴于:
public static <T> CompletableFuture<? extends List<? extends T>> supplyAllOf(
List<? extends CompletableFuture<? extends T>> input)
{
return CompletableFuture.allOf(input.toArray(new CompletableFuture<?>[input.size()])).
thenApply(ignored -> input.stream().map(CompletableFuture::join).collect(Collectors.toList()));
}
我收到此编译器警告(使用 -Xlint
):
found raw type: java.util.concurrent.CompletableFuture
missing type arguments for generic class java.util.concurrent.CompletableFuture<T>
但如果我将 CompletableFuture::join
替换为 e -> e.join()
,警告就会消失。
这是编译器错误吗?如果不是,为什么我会看到这种行为?
不完全确定,但看起来像this issue(或者至少是它的一个用例)。
无论哪种方式,这在 10
中已修复(刚刚测试过)并且它不会产生任何警告。
鉴于:
public static <T> CompletableFuture<? extends List<? extends T>> supplyAllOf(
List<? extends CompletableFuture<? extends T>> input)
{
return CompletableFuture.allOf(input.toArray(new CompletableFuture<?>[input.size()])).
thenApply(ignored -> input.stream().map(CompletableFuture::join).collect(Collectors.toList()));
}
我收到此编译器警告(使用 -Xlint
):
found raw type: java.util.concurrent.CompletableFuture
missing type arguments for generic class java.util.concurrent.CompletableFuture<T>
但如果我将 CompletableFuture::join
替换为 e -> e.join()
,警告就会消失。
这是编译器错误吗?如果不是,为什么我会看到这种行为?
不完全确定,但看起来像this issue(或者至少是它的一个用例)。
无论哪种方式,这在 10
中已修复(刚刚测试过)并且它不会产生任何警告。