为什么这样会起作用:
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(array);
但这个不行:
List<String> list = Arrays.asList({"a","b","c"});
在构造和赋值数组时,这是一种仅可用的简写形式。
String[] array = {"a", "b", "c"};
不过,你可以这样做:
List<String> list = Arrays.asList("a","b","c");
asList
可以接受“可变参数”。
您的问题是为什么一个有效,而另一个无效,对吗?
嗯,原因在于{"a","b","c"}
不是有效的Java表达式,因此编译器无法接受它。
您似乎想要传递一个数组初始化程序,而不提供完整的数组创建表达式(JLS 15.10)。
正确的数组创建表达式如其他人所指出的:
String[] array = {"a", "b", "c"};
如JLS 10.6 数组初始化器所述,或者
String[] array = new String[]{"a", "b", "c"};
第二个方法对于内联非常有用,因此您可以直接传递它而不是数组变量。
由于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"});
Arrays.asList("a", "b", "c");
,这样更短,并且更接近于原始问题。 - Tim Pote
List
转换为List<String>
”。 - BlueRaja - Danny Pflughoeft