【发布时间】:2016-07-15 13:44:31
【问题描述】:
1) 好的
List<int[]> listOfArrays1 = Arrays.asList( new int[]{1, 2} );
2) 好的
List<int[]> listOfArrays2 = Arrays.asList( new int[]{1, 2}, new int[]{3, 4} );
3) 编译错误Type mismatch: cannot convert from List<Integer> to List<Integer[]>
List<Integer[]> listOfArrays3 = Arrays.asList( new Integer[]{1, 2} );
4) 好的
List<Integer[]> listOfArrays4 = Arrays.asList( new Integer[]{1, 2}, new Integer[]{3, 4} );
这是asList的签名:public static <T> List<T> asList(T... a)
asList 需要 0 个或多个 T 类型的“a”。我的“a”是 new Integer[]{1, 2},它的类型是 Integer[]。那么,为什么它会生成List<Integer> 而不是List<Integer[]>?
【问题讨论】:
-
请解释 1 和 2 为何没有显示任何错误。
List不适用于原始int。 -
@Sufian
int[]不是原始的。这是一个对象。 -
(1) 正确解析是因为
T可以是int[]但不是int。相关stackoverflow.com/questions/2721546/… -
OP,我建议您阅读此处标记的重复问题链中的答案,并确定它们是否完全令人满意(我不认为它们是)。如果不是,请编辑您的问题并在顶部解释您为什么认为这不是重复的。也许那样标记将被删除。