使用带数组快捷方式声明的Arrays.asList时出现语法错误

时间:2015-07-10 09:48:59

标签: java arrays syntax syntax-error

有人可以解释为什么这个表达式没问题

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

但是这个被编译器拒绝了“语法错误”

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

是否只允许在数组声明的右侧声明数组的快捷语法?

1 个答案:

答案 0 :(得分: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"));