【问题标题】:Syntax Error when using Arrays.asList with array shortcut declaration使用带有数组快捷方式声明的 Arrays.asList 时出现语法错误
【发布时间】:2015-07-10 09:48:58
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 你得到的错误:Type mismatch: cannot convert from String[] to List&lt;String&gt;.

标签: java arrays syntax syntax-error


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    相关资源
    最近更新 更多