在 Java 中,符号 `...` 在原型声明的上下文中意味着什么:`type function_name (type... parameter_name)`

In Java, what does the notation `...` mean in the context of a prototype declaration: `type function_name (type... parameter_name)`

我正在学习 Java,并且在函数原型中我经常看到变体 type... parameter_name 的参数。 ... 表示法是什么意思?

新功能和增强功能 J2SE 5.0 说(部分)

Varargs

This facility eliminates the need for manually boxing up argument lists into an array when invoking methods that accept variable-length argument lists. Refer to JSR 201.

它也被称为variadic function。根据维基百科,

In computer programming, a variadic function is a function of indefinite arity, i.e., one which accepts a variable number of arguments.

那些叫做varargs。调用该方法时,您可以为该参数传入任意数量的参数(即使是 0,因此您可以忽略它),也可以传入一个数组。在方法内部,varags 参数被视为一个数组。

比如这个方法:

public void foo(String... strs) {}

可以通过以下任何方式调用:

foo();
foo("hello", "world");

String[] args = {"hello", "world"};
foo(args);

在方法中,您可以像这样访问参数:

String str1 = strs[0];
String str2 = strs[1];

需要注意的一件重要事情是可变参数 必须 是您方法中的最后一个参数(当您考虑传递的参数数量可以变化时,这是有道理的,所以你必须先解决其他参数)。