这是我想做的事情:

public void add(Integer... newIntegers) {
    for (Integer i : newIntegers) {
        integers.add(i);
    }
}

我不确定为什么,但是无法将ArrayList<Integer>放入方法中。

我很高兴只复制Lists方法,但我认为必须有一种更有效的方法。

我尝试了以下想法,认为我可以做一个可以做的事情:
public void add(Integer... | List<Integer> newIntegers) {
    for (Integer i : newIntegers) {
        integers.add(i);
    }
}

但是,快速浏览StackOverfow之后,发现不可能。还有其他办法吗?

最佳答案

接受Integer...的方法不能使用集合。它只能消耗一个整数数组。

最好的办法是使用方法重载。

public void add(Integer...newIntegers) {
    for (Integer i : newIntegers) {
        integers.add(i);
    }
}

public void add(List<Integer> newIntegers) {
    for (Integer i : newIntegers) {
        integers.add(i);
    }
}

就个人而言,我会坚持上述内容,但是如果您想避免代码重复,而是在每次调用public void add(Integer...newIntegers) {...}时构造一个新列表,则可以按照@Sweeper在注释中的建议进行操作。
public void add(Integer... newIntegers) {
     add(Arrays.asList(newIntegers));
}

public void add(List<Integer> newIntegers) {
    for (Integer i : newIntegers) {
        integers.add(i);
    }
}

09-11 02:21