拳击与Arrays.asList()

时间:2011-12-05 14:40:25

标签: java generics collections

在以下示例中:

class ZiggyTest2{
    public static void main(String[] args){

        int[] a = { 1, 2, 3, 4,7};      

        List<Integer> li2 = new ArrayList<Integer>();
        li2 = Arrays.asList(a);     

    }
}   

编译器抱怨int []和java.lang.Integer不兼容。即

found   : java.util.List<int[]>
required: java.util.List<java.lang.Integer>
                li2 = Arrays.asList(a);
                               ^

如果我更改List定义以删除泛型类型,它可以正常工作。

List li2 = new ArrayList();
  • 编译器是否应该自动将整数注入?
  • 如何使用in int数组创建List<Integer>对象 Arrays.asList()?

谢谢

2 个答案:

答案 0 :(得分:6)

Java不支持将整个基元数组自动装入相应的包装类中。解决方案是创建类型为Integer[]的数组。在这种情况下,每个int都会被单独装入Integer

int[] a = { 1, 2, 3, 4, 7 };
List<Integer> li2 = new ArrayList<Integer>();
for (int i : a) {
    li2.add(i); // auto-boxing happens here
}

答案 1 :(得分:5)

删除泛型会使其编译,但不起作用。您的列表将包含一个元素,即int[]。 您必须自己遍历数组,并手动插入List中的每个元素