我正在尝试通过执行
将int类型的数组转换为ListList<Integer> endingRoutesBusStopsList = Arrays.asList(endingRoutesBusStops);
但由于某种原因,我不断收到错误
Type mismatch: cannot convert from List<int[]> to List<Integer>
我不明白这是什么问题。
我知道
List<int[]> endingRoutesBusStopsList = Arrays.asList(endingRoutesBusStops);
将解决错误,但我不能按照我想要的方式使用它。
有人有什么想法吗?
答案 0 :(得分:2)
这是因为int[]
与Integer[]
不同。自动装箱不适用于Array
。
答案 1 :(得分:2)
问题是因为“int []”是一个对象,
Arrays.asList(T ...)获得泛型vararg,这意味着它将“int []”视为“Object”(数组int []和Integer的公共超类是Object)
因此,从asList方法的角度来看,你不会传递一个int数组,而是传递一个对象。
无论如何,你应该从int到包装器Integer进行隐式转换。建议明确说明。
答案 2 :(得分:0)
我们错过了更多的代码,但总的来说,让我尝试用代码回答:
这有效:
Integer[] arrayOfInt = { Integer.valueOf(0), Integer.valueOf(1) };
List<Integer> listOfInt = Arrays.asList(arrayOfInt);
这也有效,因为原始“1”被自动装箱到Integer对象:
Integer[] arrayOfInt = { 1, 2, 3, 4 };
List<Integer> listOfInt = Arrays.asList(arrayOfInt);
最后,这不起作用,因为int []无法自动装箱到Integer []:
int[] arrayOfInt = { 1, 2, 3, 4 };
List<Integer> listOfInt = Arrays.asList(arrayOfInt);
更新:这与@MichaelBorek的讨论中的评论相似。 This example重复尝试使用相同的代码进行自动装箱。自动装箱的成本似乎是使用它的代码比直接使用对象的代码长 5次。