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

2022-09-02 21:15:18

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

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

我在代码示例中注意到:

public void method1 (Animal... animal) {
// Code
}

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

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

  2. 类的对象 动物 作为参数传递给方法 1(动物...)

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

另外,请让我知道这3个点的符号是否有任何编程术语。


答案 1

它被称为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!

答案 2

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

请记住,方法签名中只能有一个给定类型的 vararg 参数,并且 vararg 之后的签名中不能有另一个相同类型的参数(显然,没有办法区分两者)。