int []和Integer []之间的区别以及为什么它们被区别对待? [重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我有两段代码,主要关注的是方法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[]>

java arrays boxing
1个回答
3
投票

Arrays.asList采用一系列引用类型,而不是基本类型。

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

Integer是一种参考类型,它解释了为什么List<Integer>是返回类型。

© www.soinside.com 2019 - 2024. All rights reserved.