【发布时间】:2019-02-05 03:08:06
【问题描述】:
我有两段代码,主要关注的是方法Arrays.asList(T... a)。
在第一个中我输入了一个Integer[],在第二个中我输入了一个int[],并且 - 这是让我感到困惑的部分,在这两种情况下,生成的List<...> 是不同的:
Integer[] arrayBoxed = new Integer[10];
List<Integer> list = Arrays.asList(arrayBoxed);
它很短,并且没有设置 arrayBoxed 中的任何值,但它可以工作,并产生一个List<Integer>。
int[] array = new int[10];
List<int[]> list = Arrays.asList(array);
在这种情况下,出于某种原因,我得到了一个List<int[]>,这是一个非常病态的构造。
这是为什么呢?
问题是,考虑到Arrays.asList 的类似输入,我希望这两个函数输出相同(两个代码段都完全正常)。但是,该方法一次返回List<Integer>,另一次返回List<int[]>。
【问题讨论】:
-
这里有一些可能对您的研究有用的信息 -> stackoverflow.com/questions/18845289/…
-
你期望得到什么?
-
List
list = Arrays.asList(arrayBoxed);在这里,您正在制作一个整数类型的元素列表。列表 列表 = Arrays.asList(array);在这里,您声明了一个类型为“int数组”的元素列表 -
T不能表示原始类型,因此在T...的情况下in[]T不能成为int并且最接近的可用非原始类型是数组本身。所以List<T>变成了List<int[]>。 -
看看重复,尤其是这个答案:stackoverflow.com/a/1467940