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的返回类型?
答案 0 :(得分:3)
您可以将vararg参数称为数组。
public Integer[] bar(Integer... ids) {
..
}
请参阅varargs docs
仍然必须在数组中传递多个参数,但varargs功能会自动化并隐藏进程
对于jvm,这实际上是一个数组,编译器隐藏了数组的创建。
答案 1 :(得分:2)
将bar
的返回类型设置为Integer[]
,并foo
将fIds
指定为Integer[]
。
答案 2 :(得分:1)
变量参数参数只是数组的语法糖,因此您只需将ids
作为Integer
的数组处理(即Integer[]
)。
答案 3 :(得分:1)
类似的东西:
public Integer[] bar(Integer... ids) {
List<Integer> res = new ArrayList<Integer>();
for (Integer id : ids)
if (shouldBeIncluded(id)) res.add(id);
return res.toArray();
}