给出一个简单的泛型类:
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;
}
}
初始化该类的列表:
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]);
为什么?
Stream
的 toArray
采用 IntFunction<A[]>
- 即接受 int
并返回数组的函数。
您尝试将数组传递给它。
应按如下方式使用:
container.stream().map(value -> value.aList).toArray(List<?>[]::new)