将 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"));
谁能解释一下为什么这个表达式可以
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"));