在方法定义中用作参数的一部分时,三个点(...)表示什么?
此外,这3个点的符号是否有任何编程术语?
我在代码示例中注意到了:
public void method1 (Animal... animal) {
// Code
}
这个方法是从2个地方调用的。调用时传递的参数在两种情况下都不同:
对象数组作为参数传递给method1(Animal ...)
类Animal的对象作为参数传递给method1(Animal ...)
所以,如果您不确定是将传递数组的单个元素还是将整个数组作为参数传递给方法,那么在方法定义中使用3个点作为参数的一部分?
另外,如果这3个点的符号有任何编程术语,请告诉我。
答案 0 :(得分: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!
答案 1 :(得分:4)
这意味着该方法接受该类型的对象但的数组,当您传递由逗号分隔的该类型的多个对象时,该数组会自动创建。
请记住,方法签名中只能有一个给定类型的vararg参数,并且在vararg之后的签名中不能有另一个相同类型的参数(显然,没有办法区分两者。)
答案 2 :(得分:1)
这意味着零个或多个String对象(或它们的数组)可以作为该函数的参数传递。
也许:
x("foo", "bar");
x("foo", "bar", "baz");