为什么int []上的Arrays.asList返回List <int []>,而不是List <int>?</int> </int []>

时间:2011-02-21 03:30:25

标签: java arrays list arraylist

考虑以下代码:

int[] tcc = {1,2,3};
ArrayList<Integer> tc = Arrays.asList(tcc);

对于上述情况,Java抱怨它无法从List<int[]>转换为ArrayList<Integer>

这有什么问题?

为什么是List<int[]>而不是List<int>

3 个答案:

答案 0 :(得分:3)

ArrayList只能保存对象而不是诸如整数之类的对象,而且因为int!= Integer,你不能做你正在尝试用基元数组做的事情,就这么简单。这将适用于整数数组。

答案 1 :(得分:1)

这将有效:

ArrayList tc = new ArrayList(Arrays.asList(1,2,3));

答案 2 :(得分:1)

你可以将它作为:

List<int[]> tc = Arrays.asList(tcc);

Arrays.asList返回列表,而不是ArrayList。由于Arrays.asList是varargs函数,因此它认为tcc是更大数组的一个元素。

如果您只想要一个整数列表,则必须将其重写为SB的答案中提到的Hovercraft Of Eel

List<Integer> tc = Arrays.asList(1, 2, 3);

或者,如果您使tcc成为Integer[],您仍然可以通过明确要求List整数来提供类型参数,从而将您的数组用作以下代码段中的参数这与传递的数组一致:

 Integer[] tcc = {1,2,3};
 List<Integer> tc = Arrays.<Integer>asList(tcc);