-1

我想知道,为什么我不能使用 {"a", "b"} 作为字符串数组方法参数的输入?

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"});
}  
4

2 回答 2

6

JLS 的第 10.3 节

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

数组初始值设定项语法仅在变量声明的一部分直接有效。在其他任何地方 - 包括以后的分配 - 您必须使用数组创建表达式:

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

我怀疑这使得语言在如何指定方面更简单,基本上。

于 2013-04-03T18:47:39.903 回答
1

你应该使用:

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

在java中,甚至一个字符串数组也被视为对象。您期望 Strings 数组的对象作为fun参数。这个对象是由String[]{"a","b"}which 提供的,它是一个anonymous String array完全构造和初始化的对象。

于 2013-04-03T18:47:28.470 回答