以下是引发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[]
。
asList
is的参数类型T...
和泛型类型T
不能表示原始类型int
,因此它将表示最特定的Object类,在这种情况下为array type int[]
。
这就是为什么Arrays.asList(arrs);
将尝试返回List<int[]>
而不是List<int>
甚至返回的原因List<Integer>
。
有些人期望从自动转换int[]
为Integer[]
,但不要忘记自动装箱仅适用于原始类型,而数组不是原始类型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句