Java:为什么不在这里发生自动装箱?

时间:2009-11-20 14:46:07

标签: java generics types autoboxing

这给了我一个错误:

int[] l = new int[] {0, 2, 192, -1, 3, 9, 2, 2};
int[] l2 = new int[] {9001, 7, 21, 4, -3, 11, 10, 10};
int[] l3 = new int[] {5, 5, 5, 64, 21, 12, 13, 200};

Set<List<Integer>> lists = new HashSet<List<Integer>>();
lists.add(Arrays.asList(l));
  

Eclipse:类型add(List<Integer>)中的方法Set<List<Integer>>不适用于参数(List<int[]>

我认为int应该被自动装箱到Integer

2 个答案:

答案 0 :(得分:15)

虽然int被自动装箱到Integer,但int []不会被自动装箱到Integer []。

数组不是盒装的,只是类型本身。

请参阅:How to convert int[] into List<Integer> in Java?了解变通方法和基本原因。

答案 1 :(得分:1)

它会从

自动装箱
Integer i = 1
int ii = i;

但是,你试图转换一个数组,当它试图将一个基元数组作为一个对象数组时,它们是不同的。