为什么列表不能包含在`Integer ...'参数中

The*_*nda 3 java arrays parameters methods list

这是我想要做的:

public void add(Integer... newIntegers) {
    for (Integer i : newIntegers) {
        integers.add(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

我不知道为什么,但我不能ArrayList<Integer>在方法中加入.

我很高兴只是复制列表的方法,但我认为必须有一个更有效的方法.

我尝试了下面的想法,我可以为catch块做你能做的事情:

public void add(Integer... | List<Integer> newIntegers) {
    for (Integer i : newIntegers) {
        integers.add(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,在快速StackOverfow之后,发现它是不可能的.还有其他方法吗?

Ous*_* D. 5

接受的方法Integer...不能使用集合.它只能使用一个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);
    }
}
Run Code Online (Sandbox Code Playgroud)

就个人而言,我会跟上面的坚持,但如果你想避免代码重复,而是构建每次一个新的列表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);
    }
}
Run Code Online (Sandbox Code Playgroud)