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

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

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

我在代码示例中注意到:

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

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

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

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

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

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

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

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

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

这意味着可以传递零个或多个String对象(或它们的数组)作为该函数的参数。

也许:

 x("foo", "bar"); x("foo", "bar", "baz");