这就是我要做的事情:
public void add(Integer... newIntegers) {
for (Integer i : newIntegers) {
integers.add(i);
}
}
我不确定原因,但我无法在方法中添加ArrayList<Integer>
。
我很高兴只是复制列表的方法,但我认为必须有一种更有效的方法。
我尝试了下面的想法,我可以为catch块做你能做的事情:
public void add(Integer... | List<Integer> newIntegers) {
for (Integer i : newIntegers) {
integers.add(i);
}
}
然而,在快速StackOverfow之后,发现它是不可能的。还有其他办法吗?
答案 0 :(得分: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);
}
}
就个人而言,我坚持使用上述内容,但如果你想避免代码重复,而是每次调用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);
}
}
答案 1 :(得分:2)
您可以通过执行以下代码来重载它,它将允许您重复使用先前创建的Add方法。
public void add(Integer...newIntegers) {
for (Integer i : newIntegers) {
integers.add(i);
}
}
public void add(List<Integer> newIntegers) {
add(newIntegers.stream().toArray(Integer[]::new));
}