我应该如何声明可变参数参数

|
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
的数组(即an3ѭ)处理。     
        像这样:
public Integer[] bar(Integer... ids) {
    List<Integer> res = new ArrayList<Integer>();
    for (Integer id : ids)
        if (shouldBeIncluded(id)) res.add(id);
    return res.toArray();
}
    

要回复问题请先登录注册