3

所以我一直试图找出String...Java的意义。据我了解,它与 String[] 大致相同,但我在此处或 Google 上找不到任何有关它的信息。

有人能告诉我它是什么以及类似的东西的正确用法吗?(假设我有一个带有参数的方法myMethod(String... args) { ... }

谢谢!

4

3 回答 3

7

String[]就类型而言,此语法确实与 相同。但是,它允许调用者通过指定可变数量的String参数来隐式构造一个数组:

myMethod("a", "b", "c");
myMethod(); // Empty array is also allowed
myMethod("a", "b");

这种语法的一个限制是,像这样的参数可能只出现在方法参数列表的末尾。

于 2013-08-25T20:02:54.987 回答
2

这意味着myMethod接受零个或多个String参数。例如,请参见此处。在Java Language Specification中,这称为可变参数:

方法或构造函数的最后一个形式参数是特殊的:它可能是一个可变参数,由类型后面的省略号表示。

如果最后一个形式参数是可变参数,则该方法是可变参数方法。否则,它是一种固定数量的方法。

JLS 还详细描述了当存在可变参数时方法签名如何匹配。

于 2013-08-25T20:02:18.513 回答
2

...表示该方法支持var -args即变量(数量)参数。

所以,你可以称你myMethod()

myMethod(); // or
myMethod(str1); // or
myMethod(str1, str2); // and so on

使用相同的方法签名myMethod(String... str)。当声明具有多个参数的var -arg方法时, var-arg参数必须在所有其他普通方法参数之后成功。

在方法内部,所有传递的参数都可以作为一个数组访问,该数组具有与参数相同的引用名称。所以,你实际上可以str.length在这里使用。

该功能非常灵活。您甚至可以将 a 传递String[]给它。但是,反过来是不正确的。采用数组的方法不接受单个字符串。

于 2013-08-25T20:03:08.860 回答