字符串数组初始化为构造函数参数

Her*_*ans 29 java arrays string constructor

在Java中,以下列方式初始化String数组是完全合法的:

String[] s = {"FOO", "BAR"};
Run Code Online (Sandbox Code Playgroud)

但是,在尝试实例化一个以String数组作为参数的类时,不允许使用以下代码:

Test t = new Test({"test"});
Run Code Online (Sandbox Code Playgroud)

但这又有效:

Test t = new Test(new String[] {"test"});
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么会这样吗?

Jig*_*shi 45

String[] s = {"FOO", "BAR"};  
Run Code Online (Sandbox Code Playgroud)

这仅在申报时允许

你不能

String[] s;
s={"FOO", "BAR"};  
Run Code Online (Sandbox Code Playgroud)


Kar*_*tel 5

因为Type[] x = { ... }是数组的初始化语法.将{ ... }仅在特定语境解释以特定的方式.