在编写简单程序时,我注意到了这个问题。
int[] example = new int[10];
List<Integer> exampleList = Arrays.asList(example);// Compilation error here
编译错误返回为无法将List<int[]>转换为List<Integer>
。但是在Java中不允许使用List<int>
,那么为什么会出现这种编译错误呢?
我这里并不质疑自动装箱,我只是想知道如何通过Arrays.asList
返回List<int[]>
。
asList的实现如下:
public static <T> List<T> asList(T... a) {
return new ArrayList<T>(a);
}
因此,它将int []视为T,这就是发生这种情况的原因。
Arrays.asList
如何返回一个List<int>
感到疑惑,但是错误信息明确地告诉你它返回的是List<int[]>
而不是List<int>
。 - Alonso Dominguez