以下方法中 String
后面的3个点是什么意思?
public void myMethod(String... strings) {
// method body
}
原文由 Vikram 发布,翻译遵循 CC BY-SA 4.0 许可协议
以下方法中 String
后面的3个点是什么意思?
public void myMethod(String... strings) {
// method body
}
原文由 Vikram 发布,翻译遵循 CC BY-SA 4.0 许可协议
该功能称为 varargs ,它是 Java 5 中引入的功能。这意味着函数可以接收多个 String
参数:
myMethod("foo", "bar");
myMethod("foo", "bar", "baz");
myMethod(new String[]{"foo", "var", "baz"}); // you can even pass an array
然后,您可以使用 String
var 作为数组:
public void myMethod(String... strings) {
for (String whatever : strings) {
// do what ever you want
}
// the code above is equivalent to
for (int i = 0; i < strings.length; i++) {
// classical for. In this case you use strings[i]
}
}
这个答案大量借鉴了 kiswa 和 Lorenzo 的……以及 Graphain 的评论。
原文由 Cristian 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
这意味着零个或多个 String 对象(或它们的单个数组)可以作为该方法的参数传递。
请参阅此处的“任意数量的参数”部分:http: //java.sun.com/docs/books/tutorial/java/javaOO/arguments.html#varargs
在您的示例中,您可以将其称为以下任何一种:
重要提示: 以这种方式传递的参数始终是一个数组——即使只有一个。确保在方法体中以这种方式对待它。
重要说明 2: 获得
...
的参数必须是方法签名中的最后一个。所以,myMethod(int i, String... strings)
可以,但是myMethod(String... strings, int i)
不行。感谢 Vash 在评论中的澄清。