【问题标题】: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 我认为它在运行时被转换为数组。 :)
  • 输入这个答案比自己尝试要花更长的时间......
  • 我想知道为什么这个问题有这么多赞成票。这是重复的问题,很容易找到答案。 stackoverflow.com/questions/6010862/…stackoverflow.com/questions/5224252/… 等。对我来说,这个问题类似于“‘私人’这个词是什么意思”这样的问题。
  • @syb0rg 你为什么在 18 天内重新标记这个问题 25 次(编辑 13-37),每次只是添加或删除相同的标签?

标签: java arrays methods parameters arguments


【解决方案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 转换而来的),而不是强制传递一个空值。
猜你喜欢
  • 2014-04-18
  • 1970-01-01
  • 2021-11-16
  • 1970-01-01
  • 2014-05-28
  • 2019-06-07
  • 2021-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多