参数列表中的 Java 数组初始化

标签 java arrays

为什么第一次调用 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/

相关文章:

Java:方法总是返回相同的结果

java - 如何使用 GUI 实现建模应用程序

java - Apache Commons FileUpload getString() 方法 - Java

java - 是否可以更改 IntelliJ 的 equals() 和 hashCode() 代码生成模板

java - 减少和增加枚举值

javascript - Vue array.splice 从列表中删除错误的项目

arrays - 将数组传递到 block 中

android - Noob 有多个安卓问题

php - 将变量分配给数组值并填充 <td>

C# ToCharArray 不适用于 char*