所以我一直试图找出String...
Java的意义。据我了解,它与 String[] 大致相同,但我在此处或 Google 上找不到任何有关它的信息。
有人能告诉我它是什么以及类似的东西的正确用法吗?(假设我有一个带有参数的方法myMethod(String... args) { ... }
谢谢!
String[]
就类型而言,此语法确实与 相同。但是,它允许调用者通过指定可变数量的String
参数来隐式构造一个数组:
myMethod("a", "b", "c");
myMethod(); // Empty array is also allowed
myMethod("a", "b");
这种语法的一个限制是,像这样的参数可能只出现在方法参数列表的末尾。
这意味着myMethod
接受零个或多个String
参数。例如,请参见此处。在Java Language Specification中,这称为可变参数:
方法或构造函数的最后一个形式参数是特殊的:它可能是一个可变参数,由类型后面的省略号表示。
如果最后一个形式参数是可变参数,则该方法是可变参数方法。否则,它是一种固定数量的方法。
JLS 还详细描述了当存在可变参数时方法签名如何匹配。
...
表示该方法支持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[]
给它。但是,反过来是不正确的。采用数组的方法不接受单个字符串。