2015-07-10 82 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"));