使用通用类型时出现ArrayList错误

时间:2015-02-09 01:14:27

标签: java generics arraylist

运行以下代码时,出现错误:

  

ArrayList中的add(java.lang.Integer)无法应用于java.lang.Integer []

如果我不在ArrayList中使用Generic Type,它运行得很好。我不太了解错误,因为arrayList和数组都是Integers。我错过了什么?谢谢!

        ArrayList<Integer> recyclingCrates = new ArrayList<Integer>();
        int houses[] = new int[8];
        int sum = 0;

        for (int x = 0; x < 8; x++) {
            System.out.println("How many recycling crates were set out at house " + x + "?");
            houses[x] = scanner.nextInt();
            for (Integer n : recyclingCrates){
                houses[x]=n;
            }
        }

        recyclingCrates.add(houses); //this is where I get the error

1 个答案:

答案 0 :(得分:1)

add单个元素添加到列表中。如果您的调用成功,它将向列表添加数组引用 - 而不是数组的内容 - 然后列表将包含单个元素(这是引用)。

假设您出于某种原因想要保留现有的代码结构(而不​​是在循环内单独添加元素):

要将数组的内容添加到列表中,请使用Arrays.asList将数组“包裹”在List中,然后使用addAll:< / p>

recyclingCrates.addAll(Arrays.asList(houses));

您还需要将houses的类型更改为Integer[] - 否则,Arrays.asList需要返回List<int>,这是不可能的。 (您也可以将其用作Arrays.asList(thing1, thing2, thing3)来返回包含thing1things2thing3的列表 - 并且将使用此语法,返回仅包含单个列表的列表数组引用,它将返回到你开始的地方!)