2015-07-10 43 views
2

有人能解釋爲什麼這種表達是OK語法錯誤使用Arrays.asList與陣列快捷聲明時

TestClass[] a = {new TestClass("a")}; 
public List<TestClass> tall = Arrays.asList(a); 

但這個是由編譯器與「語法錯誤」

public List<TestClass> tall = Arrays.asList({new TestClass("a")}); 

拒絕聲明數組的快捷方式語法只允許在數組聲明的右側?

+0

錯誤你:'類型不匹配:無法從字符串[]轉換爲列表'。 – 2015-07-10 09:58:52

回答

4

除了明確的數組初始化(例如,TestClass[] a = {new TestClass("a")};)之外,不能將{}表示法用於數組,而不調用new運算符。

所以無論是顯式調用new操作:

public List<TestClass> tall = 
    Arrays.asList(new TestClass[] {new TestClass("a")}); 

或者更好的是,使用Arrays.asList的varags符號,並完全刪除數組初始化:

public List<TestClass> tall = Arrays.asList(new TestClass("a"));