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

时间:2010-12-14 06:21:47

标签: java arrays string constructor

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

String[] s = {"FOO", "BAR"};

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

Test t = new Test({"test"});

但这再次有效:

Test t = new Test(new String[] {"test"});

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

3 个答案:

答案 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");