我应该如何声明变量参数


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();
}

相关内容

  • 没有找到相关文章

最新更新