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

标签 java arrays list methods parameters

这是我正在尝试做的:

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

我不确定为什么,但我不能输入 ArrayList<Integer>进入方法。

我非常乐意复制列表的方法,但我认为必须有更有效的方法。

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

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);
    }
}

关于java - 为什么列表不能包含在 `Integer...` 参数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49966244/

相关文章:

java - 在 eclipse 中更改导入类的属性

java - 如何确定一个字符串部分包含另一个字符串? (最好是Java)

java - 如何从网页中提取文本内容?

java - 将 List<List<string>> 转换为 string[]

c# - 使用 LINQ 从字符串列表中提取整数

java - 将字符串转换为数组或 float 列表

java - Java 中是否有用于变形图像(或处理)的库?

c++ - 在 C++ 中处理字符(没有 std::string)

c++ - 使用常量变量作为数组的大小

arrays - 拆分图像数组并将它们排列在 UIView 上