如何解决我应该如何声明可变参数参数
|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();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。