18

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

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

我在代码示例中注意到:

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

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

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

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

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

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

4

3 回答 3

19

它被称为可变参数。

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

它实际上将其转换为您可以像引用任何其他数组一样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!
于 2012-07-27T15:26:49.550 回答
5

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

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

于 2012-07-27T15:27:50.110 回答
1

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

也许:

x("foo", "bar");
x("foo", "bar", "baz");
于 2012-07-27T15:29:27.740 回答