int[] 和 Integer[] 之间的区别以及为什么对它们进行不同的处理?

The difference between int[] and Integer[] and why are they treated differently?

我有两段代码,主要关注的是方法Arrays.asList(T... a)
在第一个中我输入了一个 Integer[],在第二个中我输入了一个 int[] ,并且 - 这是让我感到困惑的部分,在这两种情况下,结果 List<...> 是不同的:

Integer[] arrayBoxed = new Integer[10];
List<Integer> list = Arrays.asList(arrayBoxed);

它很短,并且设置了 arrayBoxed 中的 none 个值,但它有效,并生成 List<Integer>.

int[] array = new int[10];
List<int[]> list = Arrays.asList(array);

在这种情况下,出于某种原因,我得到了一个 List<int[]>,这是一个非常病态的结构。

这是为什么?

问题是,给定 Arrays.asList 的相似输入,我希望这两个函数输出相同的结果(两个代码片段都具有完整的功能)。但是,一次是方法 returns List<Integer>,另一次是 List<int[]>.

Arrays.asList 采用引用类型数组,而不是基本类型。

因此,当您调用Arrays.asList(int[])时,采用的引用类型是int[](数组类型),这就是为什么结果是List<int[]>

Integer是引用类型,这就解释了为什么List<Integer>是return类型。