关于java:参数中的3个点是什么?/什么是变量arity(…)参数?

What are the 3 dots in parameters?/What is a variable arity (…) parameter?

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
public void method1(boolean... arguments)
{
  //...    
}

这是不是像一个array?我应该如何访问参数?


它被称为变量变量,或者简称为var ARGS,在Java 1.5中引入。优点是调用方法时可以传递任意数量的参数。

例如:

1
2
3
4
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);
    }
 }

上面的方法可以接受下面的所有方法调用。

1
2
3
method1(true);
method1(true, false);
method1(true, false, false);


根据其他答案,它是一个"varargs"参数。它是一个数组。

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

  • 您可以调用不带参数的方法:method1();
  • 执行此操作时,参数为空数组

许多人认为如果不指定参数,它将是空的,但不需要进行空检查。

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

1
method1((boolean[])null);

但我说如果有人这样做,就让它爆炸吧。