在 Java 中,参数类型旁边的 3 个点是什么意思?

2022-08-31 04:00:40

以下方法中的3个点是什么意思?String

public void myMethod(String... strings) {
    // method body
}

答案 1

这意味着零个或多个 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在他的评论中所作的澄清。


答案 2

这个特性叫做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的评论。