是否存在Iterable和常规数组的“超类”?

时间:2013-02-14 01:44:39

标签: java

我正在使用增强的for循环,它看起来像这样:

public void addItems (Iterable<Item> items) {
    for (Item item : items) {
        addItem(item);
    }
}

public void addItems(Item[] items) {
    for(Item item : items) {
        addItem(item);
    }
}

使用Iterable允许我使用List等,但我必须有一个单独的常规数组方法。有没有办法将它组合起来(不使用反射,增加行数或创建垃圾),所以我不必重复代码?

2 个答案:

答案 0 :(得分:5)

public void addItems(Item[] items) {
    addItems(Arrays.asList(items));
}

答案 1 :(得分:4)

您可以重载方法(首选)

public void addItems(Item[] items) {
   addItems(Arrays.asList(items));
}

或每次调用方法时转换为List。

addItems(Arrays.asList(new int[]{1,2,3}));

第二种方法不是最佳的。正如Sticky所说:

  

我认为Arrays.asList的重复性更高   而不是我班上的3行。