在 Java 中,参数类型旁边的 3 个点是什么意思?
2022-08-31 04:00:40
以下方法中的3个点是什么意思?String
public void myMethod(String... strings) {
// method body
}
以下方法中的3个点是什么意思?String
public void myMethod(String... strings) {
// method body
}
这意味着零个或多个 String 对象(或它们的单个数组)可以作为该方法的参数传递。
请参阅此处的“任意数量的参数”部分:http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html#varargs
在您的示例中,您可以将其称为以下任一名称:
myMethod(); // Likely useless, but possible
myMethod("one", "two", "three");
myMethod("solo");
myMethod(new String[]{"a", "b", "c"});
重要提示:以这种方式传递的参数始终是一个数组 - 即使只有一个数组。确保在方法主体中以这种方式处理它。
重要提示 2:获取 的参数必须是方法签名中的最后一个参数。所以,没关系,但不是好的。...
myMethod(int i, String... strings)
myMethod(String... strings, int i)
感谢Vash在他的评论中所作的澄清。
这个特性叫做varargs,它是Java 5中引入的一个特性。这意味着函数可以接收多个参数:String
myMethod("foo", "bar");
myMethod("foo", "bar", "baz");
myMethod(new String[]{"foo", "var", "baz"}); // you can even pass an array
然后,您可以将 var 用作数组:String
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]
}
}
这个答案在很大程度上借鉴了基斯瓦和洛伦佐的......也来自Graphain的评论。