我应该如何声明一个变量参数参数

时间:2011-06-01 07:50:32

标签: java variadic-functions

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的返回类型?

4 个答案:

答案 0 :(得分:3)

您可以将vararg参数称为数组。

public Integer[] bar(Integer... ids) {
..
}

请参阅varargs docs

  

仍然必须在数组中传递多个参数,但varargs功能会自动化并隐藏进程

对于jvm,这实际上是一个数组,编译器隐藏了数组的创建。

答案 1 :(得分:2)

bar的返回类型设置为Integer[],并foofIds指定为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();
}