为什么这样做:
String[] array = {"a", "b", "c"};
List<String> list = Arrays.asList(array);
但这不会:
List<String> list = Arrays.asList({"a","b","c"});
这是仅在构造和分配数组时可用的简写。
String[] array = {"a", "b", "c"};
不过,您可以这样做:
List<String> list = Arrays.asList("a","b","c");
正如asList
可以接受"vararg"参数一样。
你的问题是为什么一个有效而另一个无效,对吧?
好吧,原因是{"a","b","c"}
不是有效的 Java 表达式,因此编译器无法接受它。
您希望在不提供完整数组创建表达式的情况下传递数组初始值设定项 (JLS 15.10)。
正如其他人指出的那样,正确的数组创建表达式是:
String[] array = {"a", "b", "c"};
如 JLS 10.6 数组初始值设定项中所述,或
String[] array = new String[]{"a", "b", "c"};
如 JLS 15.10 数组创建表达式中所述。
第二个对于内联很有用,因此您可以直接传递它而不是数组变量。
由于 Arrays
中的 asList
方法使用变量参数,并且变量参数表达式映射到数组,因此您可以按以下方式传递内联数组:
List<String> list = Arrays.asList(new String[]{"a", "b", "c"});
或者简单地传递将自动映射到数组的变量参数:
List<String> list = Arrays.asList("a","b","c");
试试
List<String> list = Arrays.asList(new String[] {"a","b","c"});