使用数组作为函数参数:"not a statement"(Java)

Sar*_*ara 3 java string

我有一个String[]参数的函数.怎么可能这个:

String[] string = {"string1", "string2"};
myFunction(string);
Run Code Online (Sandbox Code Playgroud)

工作,而这:

myFunction({"string1", "string2"});
Run Code Online (Sandbox Code Playgroud)

不?它给了我错误:

Illegal start of expression
not a statement
";" expected

ars*_*jii 6

独立的{"string1", "string2"}是语法糖:只有在声明和初始化数组时,编译器才能推断它应该是什么.但是,就它本身而言,这种语法不起作用:

String[] s1 = {"abc"};  // works

String[] s2;
s2 = {"abc"};  // error, need to explicitly use 'new String[]{"abc"}'
Run Code Online (Sandbox Code Playgroud)

另外,在您的情况下,您可以通过使用varargs来避免显式数组创建:

void myFunction(String... args) {
    // args is a String[]
}

...

myFunction("string1", "string2");
Run Code Online (Sandbox Code Playgroud)