【发布时间】:2012-03-31 21:03:29
【问题描述】:
我在我的 android java 文件中看到了这个定义。 它看起来就像字符串 []。它们不同吗? 谢谢你。
【问题讨论】:
-
... 或过去 5 年左右编写的任何优秀的 Java 教科书。
我在我的 android java 文件中看到了这个定义。 它看起来就像字符串 []。它们不同吗? 谢谢你。
【问题讨论】:
varags。如果方法签名是 method(Param param, String... x),它将采用一个 Param 类型的对象和 任意 个 String 对象。
有一些很酷的事情:
没什么特别的。这只是加糖的阵列。所以,method(MyObject... o) 与 method(MyObject[] o) 相同。
Vararg 必须是参数列表中的最后一个参数。
有一个有趣的东西曾经咬过我一次。 method(MyObject... o) 可以被称为method() 而不会出现任何编译错误。 Java 将在内部将无参数调用转换为method(new MyObject[0])。所以,请注意这一点。
【讨论】:
将数组的项写成参数的语法
例如:
public String first (String... values) {
return values[0];
}
然后你可以用first("4","2","5","67")调用这个方法
javacompiler 会自己创建一个参数数组。
【讨论】:
这是一个可变参数,可变数量的参数。在方法体中,您将其视为 String[],但是当您调用该方法时,您可以选择提供 String[] 或简单地枚举您的值。
void foo(String... blah) { }
void bar() {
String[] a = { "hello", "world" };
foo(a); // call with String[]
foo("hello", "world"); // or simply enumerate items
}
在 Java 5 中引入。
【讨论】:
用于定义带有variable number of arguments 的方法。
【讨论】:
String 是字符串类型。
String[] 是一个字符串数组。
String ... 是一种语法糖,名为ellipsis,在java 1.5 中引入,取自C。它可以用在方法定义中,实际上与数组相同,只有一个区别。
如果方法定义为:
public void foo(String[] arg){}
您必须将数组传递给它:
foo(new String[] {"a", "b"});
如果方法定义为:
public void foo(String arg){}
你可以这样称呼它
foo(new String[] {"a", "b"});
或
foo("a", "b");
【讨论】: