参数中的 3 个点是啥?/啥是可变参数(...)? [复制]
Posted
技术标签:
【中文标题】参数中的 3 个点是啥?/啥是可变参数(...)? [复制]【英文标题】:What are the 3 dots in parameters?/What is a variable arity (...) parameter? [duplicate]参数中的 3 个点是什么?/什么是可变参数(...)? [复制] 【发布时间】:2013-01-22 06:52:26 【问题描述】:我想知道...
的参数在Java 中是如何工作的。例如:
public void method1(boolean... arguments)
//...
这像array
吗?我应该如何访问参数?
【问题讨论】:
它是一个数组,你可以像数组一样访问它,变量名为arguments
。
@jlordo 我认为它在运行时被转换为数组。 :)
输入这个答案比自己尝试要花更长的时间......
我想知道为什么这个问题有这么多赞成票。这是重复的问题,很容易找到答案。 ***.com/questions/6010862/…、***.com/questions/5224252/… 等。对我来说,这个问题类似于“‘私人’这个词是什么意思”这样的问题。
@syb0rg 你为什么在 18 天内重新标记这个问题 25 次(编辑 13-37),每次只是添加或删除相同的标签?
【参考方案1】:
它称为 Variable arguments 或简称 var-args,在 Java 1.5 中引入。 优点是您可以在调用该方法时传递任意数量的参数。
例如:
public void method1(boolean... arguments) throws Exception
for(boolean b: arguments) // iterate over the var-args to get the arguments.
System.out.println(b);
上面的方法可以接受下面所有的方法调用。
method1(true);
method1(true, false);
method1(true, false, false);
【讨论】:
为了改善您的答案,您可以添加有关如何获取传递值的信息:) @Pshemo 刚刚添加了它。 :)【参考方案2】:根据其他答案,它是一个“可变参数”参数。这是一个数组。
很多人没有意识到的是两个重要的点:
你可以调用带有no参数的方法:method1();
当你这样做时,参数是一个空数组
如果不指定参数,很多人认为它会为 null,但 null 检查是不必要的。
你可以强制传递一个空值,像这样调用它:
method1((boolean[])null);
但我说如果有人这样做,就让它爆炸吧。
【讨论】:
我不是 Java 用户,但这看起来更像是传递一个布尔数组(恰好是从null
转换而来的),而不是强制传递一个空值。以上是关于参数中的 3 个点是啥?/啥是可变参数(...)? [复制]的主要内容,如果未能解决你的问题,请参考以下文章