首页 > 解决方案 > java8 stream toArray 问题 - 为什么我不需要在这里为 int[][]::new 指定数组大小?

问题描述

使用下面的代码,我可以复制二维数组,但为什么我不需要在这里为 int[][]::new 指定数组大小?

int[][]source= {{0, 1, 0}, {0, 0, 1}, {1, 1, 1}, {0, 0, 0},{0, 0, 0}};

int[][] destination=Arrays.stream(source)
                    .map(a ->  Arrays.copyOf(a, a.length))
                    .toArray(int[][]::new);

标签: javajava-stream

解决方案


因为你提供的不是数组,而是对构造数组的方法的引用。该toArray实现将提供调用构造函数的大小。


推荐阅读