public void foo(Integer... ids) {
Integer... fIds = bar(ids);
}
public void bar(Integer... ids) {
// I would like to eliminate few ids and return a subset. How should I declare the return argument
}
我应该如何声明bar的返回类型?
您可以将vararg参数称为数组。
public Integer[] bar(Integer... ids) {
..
}
参见varargs文档
在一个数组中必须传递多个参数,这仍然是事实,但varargs功能自动化并隐藏了过程
对jvm来说,这实际上是一个数组,编译器隐藏了数组的创建。
将bar
的返回类型设置为Integer[]
,在foo
中也将fIds
的类型指定为Integer[]
。
变量参数只是数组的语法糖,因此您可以将ids
作为Integer
的数组(即Integer[]
(处理。
类似的东西:
public Integer[] bar(Integer... ids) {
List<Integer> res = new ArrayList<Integer>();
for (Integer id : ids)
if (shouldBeIncluded(id)) res.add(id);
return res.toArray();
}