【问题标题】:Java Generics: Stream toArray()Java 泛型:流 toArray()
【发布时间】:2022-01-26 10:03:36
【问题描述】:

给定一个简单的泛型类:

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]);

为什么?

【问题讨论】:

    标签: java generics stream toarray


    【解决方案1】:

    StreamtoArray 采用 IntFunction&lt;A[]&gt; - 即接受 int 并返回数组的函数。

    您尝试将数组传递给它。

    应该这样使用:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-17
      • 1970-01-01
      相关资源
      最近更新 更多