有人可以解释为什么这个表达式没问题
TestClass[] a = {new TestClass("a")};
public List<TestClass> tall = Arrays.asList( a );
但是这个被编译器拒绝了“语法错误”
public List<TestClass> tall = Arrays.asList( {new TestClass("a")} );
是否只允许在数组声明的右侧声明数组的快捷语法?
答案 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"));