为什么我不能使用{“a”,“b”}作为String数组方法参数的输入

时间:2013-04-03 18:45:37

标签: java

我在想,为什么我不能使用{“a”,“b”}作为String数组方法参数的输入?

public static void fun(String[] s) {
}

public static void main(String[] args) {
    String[] s = {"a", "b"};

    // OK
    fun(s);

    // This line is not accepted by compiler
    fun({"a", "b"});
}  

2 个答案:

答案 0 :(得分:6)

来自section 10.3 of the JLS

  

数组由数组创建表达式(§15.10)或数组初始值设定项(§10.6)创建。

当变量声明的一部分时,数组初始化程序语法仅对直接有效。在其他任何地方 - 包括以后的分配 - 你必须使用数组创建表达式:

fun(new String[] { "a", "b" });

我怀疑这使得语言在指定的方式上更简单。基本上。

答案 1 :(得分:1)

您应该使用:

fun(new String[]{"a","b"});

在java中,即使将一个字符串数组视为对象。您期望Strings数组的对象为fun参数。此对象由String[]{"a","b"}提供,anonymous String array是完全构造和初始化的{{1}}。