将 Arrays.asList 与数组快捷方式声明一起使用时出现语法错误

Syntax Error when using Arrays.asList with array shortcut declaration

谁能解释一下为什么这个表达式可以

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

但是这个被编译器拒绝了 "Syntax error"

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

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

除了显式数组初始化(例如 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"));