在Java中,以下列方式初始化String数组是完全合法的:
String[] s = {"FOO", "BAR"};
但是,在尝试实例化一个以String数组作为参数的类时,不允许使用以下代码:
Test t = new Test({"test"});
但这再次有效:
Test t = new Test(new String[] {"test"});
有人可以解释为什么会这样吗?
答案 0 :(得分:45)
String[] s = {"FOO", "BAR"};
仅在声明时间允许
你不能
String[] s;
s={"FOO", "BAR"};
答案 1 :(得分:5)
因为Type[] x = { ... }
是数组的初始化语法。仅在特定上下文中以特定方式解释{ ... }
。
答案 2 :(得分:3)
因为你想要一种传递String数组的简单方法,我建议你使用varargs
class Test {
public Test(String...args);
}
// same as new Test(new String[] { "test", "one" })
Test t = new Test("test", "one");