Java 参数中的3个点是什么?/什么是可变算术(…)参数?

Java 参数中的3个点是什么?/什么是可变算术(…)参数?,java,arrays,methods,parameters,arguments,Java,Arrays,Methods,Parameters,Arguments,我想知道…的参数在Java中是如何工作的。例如: public void method1(boolean... arguments) { //... } 这像一个数组吗?我应该如何访问参数?它被调用,或者简而言之var args,在Java 1.5中引入。 优点是在调用方法时可以传递任意数量的参数 例如: public void method1(boolean... arguments) throws Exception { for(boolean b: argument

我想知道
的参数在Java中是如何工作的。例如:

public void method1(boolean... 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);

根据另一个答案,它是一个“varargs”参数。这是一个数组

许多人没有意识到的是两点:

  • 您可以调用不带参数的方法:
    method1()
  • 执行此操作时,参数为空数组
许多人认为,如果不指定参数,它将为null,但不需要进行null检查


您可以通过如下方式调用null来强制传递它:

method1((boolean[])null);

但我要说的是,如果有人这样做,让它爆炸。

它是一个数组,您可以像使用变量名
参数的数组一样访问它。
@jlordo我认为它在运行时被精确地转换为数组。:)我想知道为什么这个问题有这么多人投赞成票。这是重复的问题,答案很容易找到,等等。对我来说,这个问题类似于“单词‘private’是什么意思”这样的问题。@syb0rg为什么你在18天的时间里对这个问题重新标记了25次(编辑13-37),每次只需添加或删除相同的标记?为了改进你的答案,你可以添加有关如何获得传递值的信息:)@Pshemo刚刚添加了它。:)我不是Java用户,但这看起来更像是传递一个布尔数组(恰好是从
null
转换而来的),而不是强制传递null。