为什么整数自动装箱和拆箱对Java中的Arrays.asList不起作用?

头脑风暴

以下是引发compile error

int[] arrs = {1,2,4,3,5,6};
List<Integer> arry = Arrays.asList(arrs);

但这有效:

for (Integer i : arrs){
   //do something
}

自动装箱在许多情况下都有效,我仅举了for-loop上面的一个例子但它的失败List-view,我做的Arrays.asList()

为什么会失败,为什么选择诸如设计的实现方式?

普什莫

要使事情正常进行,您需要使用Integer[]而不是int[]

asListis的参数类型T...和泛型类型T不能表示原始类型int,因此它将表示最特定的Object类,在这种情况下为array type int[]
这就是为什么Arrays.asList(arrs);将尝试返回List<int[]>而不是List<int>至返回的原因List<Integer>

有些人期望从自动转换int[]Integer[],但不要忘记自动装箱仅适用于原始类型,而数组不是原始类型。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章