Java 泛型:Stream toArray()

Java Generics: Stream toArray()

给定一个简单的泛型 class:

private static class Container<T> {
    private List<T> aList;
    private T aValue;

    private Container(List<T> aList, T aValue) {
        this.aList = aList;
        this.aValue = aValue;
    }
}

初始化class的列表:

List<Container<?>> container = new ArrayList<>();
// Add some elements...

不可能(类型 Stream> 中的方法 toArray(IntFunction) 不适用于参数 (List[])):

container.stream().map(value -> value.aList).toArray(new List<?>[0]);

可能:

container.stream().map(value -> value.aList).collect(Collectors.toList()).toArray(new List<?>[0]);

为什么?

StreamtoArray 采用 IntFunction<A[]> - 即接受 int 和 returns 数组的函数。

您试图将数组传递给它。

应该这样使用:

container.stream().map(value -> value.aList).toArray(List<?>[]::new)