考虑以下代码:
int[] tcc = {1,2,3};
ArrayList<Integer> tc = Arrays.asList(tcc);
针对以上代码,Java 报错说无法将 List<int[]>
转换为 ArrayList<Integer>
。
这是怎么回事呢?
为什么是 List<int[]>
而不是 List<int>
?
ArrayList 只能容纳对象,而不能容纳像 int 这样的基本类型。由于 int != Integer,因此您无法在原始类型数组中执行您尝试执行的操作。这很简单明了。但是如果使用 Integer 数组,则可以实现该功能。
你可以这样写:
List<int[]> tc = Arrays.asList(tcc);
Arrays.asList 返回的是一个List,而不是 ArrayList。由于 Arrays.asList 是一个 varargs 函数,它认为 tcc
是一个更大数组中的一个元素。
如果你想要一个整数列表,你需要像 Hovercraft Of Eel 的答案评论中 SB 所提到的那样重新编写它:
List<Integer> tc = Arrays.asList(1, 2, 3);
或者,如果你将tcc
定义为Integer[]
,你仍然可以在下面的代码片段中将其作为参数使用,只需显式地请求一个List
类型的整数,并提供与传递的数组相符的类型参数:
Integer[] tcc = {1,2,3};
List<Integer> tc = Arrays.<Integer>asList(tcc);