1 年,1 月
Questions & Answers
115
/**
* Testing Arrays
* @author N002213F
* @version 1.0
*/
public class JavaArrays {
public void processNames(String[] arg) {
//-- patented method, stop, do not read ;)
}
public void test() {
// works fine
String[] names1 = new String[] { "Jane", "John" };
processNames(names1);
// works fine, nothing here
String[] names2 = { "Jane", "John" };
processNames(names2);
// works again, please procced
processNames(new String[] { "Jane", "John" });
// fails, why, are there any reasons?
processNames({ "Jane", "John" });
// fails, but i thought Java 5 [vargs][1] handles this
processNames("Jane", "John");
}
}
# 1 楼答案
您没有指定类型。Java在这里不进行类型推断;它希望您指定这是一个字符串数组。对this question的回答也可能对此有所帮助
如果您想要varargs,那么您应该这样编写您的方法:
注意
...
而不是[]
。仅仅接受数组并不能使您有权在该方法上使用varargs# 2 楼答案
第三个调用是不正确的,因为您无法创建这样的数组,您可以像在第二个调用中一样创建数组。如果希望最终调用成功,则必须将processNames声明为varargs(see here)的接收方
# 3 楼答案
在最后一行:
processNames(String ...args);
必须这样写才能让varargs工作