当在方法定义期间用作参数的一部分时,三个点(...)表示什么?

Vik*_*ram 16 java arrays parameters arguments

当在方法定义期间用作参数的一部分时,三个点(...)表示什么?

此外,这些3点的符号是否有任何编程术语?

我在代码示例中注意到:

public void method1 (Animal... animal) {
// Code
}
Run Code Online (Sandbox Code Playgroud)

这个方法是从2个地方调用的.调用时传递的参数在两种情况下都不同:

  1. 对象数组作为参数传递给method1(Animal ...)

  2. Animal类的对象作为参数传递给method1(Animal ...)

那么,如果您不确定是将传递数组的单个元素还是整个数组作为方法的参数,那么您是否使用3个点作为方法定义中参数的一部分?

另外,如果这3个点的符号有任何编程术语,请告诉我.

cor*_*iKa 16

它被称为varargs.

这意味着您可以根据需要传递任意数量的类型.

它实际上将它翻译成method1(Animal[] a)你并a[1]像你任何其他数组一样引用它们.

如果我有以下内容

Cat whiskers = new Cat();
Dog rufus = new Dog();
Dolphin flipper = new Dolphin();

method1(whiskers, rufus, flipper); // okay!
method1(rufus); // okay!
method1(); // okay!
method1(flipper,new Parakeet()); // okay!
Run Code Online (Sandbox Code Playgroud)


pca*_*cao 5

这意味着该方法接受该类型对象的数组,但是,当您传递多个以逗号分隔的该类型对象时,该数组会自动创建。

请记住,方法签名中只能有一个给定类型的可变参数,并且在可变参数之后的签名中不能有另一个相同类型的参数(显然,无法区分二)。