关于java:在方法定义中用作参数的一部分时,三个点(…)表示什么?

What do three dots (…) indicate when used as a part of parameters during method definition?

本问题已经有最佳答案,请猛点这里访问。

在方法定义过程中,当作为参数的一部分使用时,三个点(…)表示什么?

另外,这3个点的符号有编程术语吗?

我在一个代码示例中注意到:

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

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

  • 对象数组作为参数传递给method1(animal…)

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

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

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


    它叫varargs。

    这意味着你可以通过任意多的类型。

    它实际上将其转换为method1(Animal[] a),您将它们作为a[1]引用,就像您使用任何其他数组一样。

    如果我有以下内容

    1
    2
    3
    4
    5
    6
    7
    8
    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后面的签名中不能有另一个相同类型的参数(显然,这两者之间没有区别)。


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

    也许吧:

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