在Java中,這是完全合法的通過以下方式初始化字符串數組:String數組初始化爲構造函數的參數
String[] s = {"FOO", "BAR"};
然而,試圖實例化一個類,需要一個String數組作爲參數時,下面這段代碼是不允許的:
Test t = new Test({"test"});
但是這部作品再次:
Test t = new Test(new String[] {"test"});
有人可以解釋爲什麼這是?
在Java中,這是完全合法的通過以下方式初始化字符串數組:String數組初始化爲構造函數的參數
String[] s = {"FOO", "BAR"};
然而,試圖實例化一個類,需要一個String數組作爲參數時,下面這段代碼是不允許的:
Test t = new Test({"test"});
但是這部作品再次:
Test t = new Test(new String[] {"test"});
有人可以解釋爲什麼這是?
String[] s = {"FOO", "BAR"};
這個在聲明時只允許
你不能
String[] s;
s={"FOO", "BAR"};
因爲Type[] x = { ... }
是數組的初始化語法。 { ... }
僅在特定的上下文中以特定方式解釋。
對於你想要一個簡單的方式來傳遞一個String數組,我建議你使用可變參數
class Test {
public Test(String...args);
}
// same as new Test(new String[] { "test", "one" })
Test t = new Test("test", "one");
謝謝,但這並不是真正的問題,你也假設我們可以通過修改構造函數。 – 2010-12-14 09:49:31
@Herminator通常你可以,但不總是。下一次你可以知道你能做什麼。 – 2010-12-14 10:14:28