java中的'...'是什么?

时间:2010-09-01 21:24:33

标签: java parameters

  

可能重复:
  What is the ellipsis for in this method signature?

我在java代码中看到了“T ... elements”。 那是什么意思? 谢谢!

5 个答案:

答案 0 :(得分:7)

这意味着,您可以将所需的所有T变量传递给方法。

如果方法是:

public void myMethod(String... a)
{

}

您可以使用所需的所有String对象进行调用:

myMethod("s1");
myMethod("s1", "s2");
myMethod("s1", "s2", "s3");
myMethod("s1", "s2", "s3", "s4");

Here's关于该语言功能的Java官方文档。它是在 Java 5 中引入的。

答案 1 :(得分:7)

那是'var args' specifier

这意味着您可以将0个或更多元素传入方法。

您可以这样使用它:

public void method(String str, int... elements) {
    for (int i = 0; i < elements.length; i++) {
        print(str + " " + elements[i];
    }
}

并且,您可以这样称呼它:

method("Hi");
method("He", 1, 2 , 3, 4, 5);
method("Ha", 1 , 2);
int[] arr = {1, 2 , 3 ,3 ,4};
method("Ho", arr);

答案 2 :(得分:2)

它是T(T[])数组的占位符,其中数组本身可以指定为t1,t2,t3等,其中所有ts都是T类型。

CF:http://download.oracle.com/javase/1.5.0/docs/guide/language/varargs.html

答案 3 :(得分:2)

用于方法声明:

void someMethod(String... strings) {
  //blabla method body
}

表示可以将字符串数组作为参数,或者用逗号分隔的字符串。这两个电话都有效:

someMethod("a", "b", "c");

String[] stringsArray = new String[] {"a", "b", "c"};
some Method(stringsArray);

答案 4 :(得分:1)

这意味着您可以传入0个或更多对象T的实例。您可以将这些参数作为数组访问。

示例:

public void printStrings(String... strings)
{
    for (String string : strings) {
        System.out.println(string);
    }
}

然后,您可以使用以下任何一种调用来调用此方法:

printStrings("one", "two", "three", "four");
printStrings(new String[] { "one", "two", "three", "four" } );
printStrings(/* any array of strings, even an empty array */);

在你的情况下。 T ...意味着你可以传入任意数量的T类实例,这是一个应该在类文件顶部定义的泛型。