为什么第一次调用 someMethod 没有明确指出它是 String[] 就无法编译?
可以使用数组初始值设定项来创建 String[] 数组,但不能使用它来传递参数。大括号是否以其他方式用于传递参数,这些参数会破坏我期望的行为方式?
public void someMethod(String[] arr){
//do some magic
}
public void makeSomeMagic(){
String[] arr = {"cat", "fish", "cow"};
//Does not compile!
someMethod({"cat", "fish", "cow"});
//This compiles!
someMethod(new String[]{"cat", "fish", "cow"});
//This compiles!
someMethod(arr);
}
编译错误如下:
类型 Moo 中的方法 someMethod(String[]) 不适用于参数 (String, String, String)
最佳答案
您只能在声明数组变量或在数组创建表达式(如 new String[] { ...
。
参见 Section 10.6 Array Initializers在 Java 语言规范中:
An array initializer may be specified in a declaration, or as part of an array creation expression (§15.10), creating an array and providing some initial values
关于参数列表中的 Java 数组初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4443892/