为什么int 上的Arrays.asList返回List ,而不是List ?

考虑以下代码:

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

对于上述情况,Java抱怨它无法从List转换为ArrayList

这有什么问题?

为什么它是List而不是List

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

这将有效:

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

你可以这样做:

 List tc = Arrays.asList(tcc); 

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

如果你想只有一个整数列表,你必须把它重写为在鳗鱼的回答的评论中提到的SB :

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

或者,如果使tcc成为Integer[] ,您仍然可以通过显式请求List of Integer将您的数组用作以下代码段中的参数,并提供与传递的数组一致的类型参数:

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