这个问题在这里已有答案:
我有两段代码,主要关注的是方法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[]>
。
Arrays.asList
采用一系列引用类型,而不是基本类型。
所以,当你调用Arrays.asList(int[])
时,所采用的引用类型是int[]
(数组类型),这就是为什么结果是List<int[]>
。
Integer
是一种参考类型,它解释了为什么List<Integer>
是返回类型。