为什么这样做:
String[] array = {"a", "b", "c"};
List<String> list = Arrays.asList(array);
但这不是:
List<String> list = Arrays.asList({"a","b","c"});
答案 0 :(得分:62)
这是一个仅在构造和分配数组时才可用的简写。
String[] array = {"a", "b", "c"};
你可以这样做:
List<String> list = Arrays.asList("a","b","c");
由于asList
可以采用“vararg”参数。
答案 1 :(得分:13)
你的问题是为什么一个有效,另一个没有,对吧?
嗯,原因是{"a","b","c"}
不是有效的Java表达式,因此编译器无法接受它。
您似乎暗示的是,您希望在不提供full array creation expression(JLS 15.10)的情况下传递数组初始值设定项。
正如其他人指出的那样,正确的数组创建表达式是:
String[] array = {"a", "b", "c"};
如JLS 10.6 Array Initializers中所述,或
String[] array = new String[]{"a", "b", "c"};
如JLS 15.10 Array Creation Expressions中所述。
第二个对于内联很有用,所以你可以直接传递它而不是数组变量。
由于asList
中的Arrays
方法使用变量参数,并且变量参数表达式映射到数组,因此您可以传递内联数组,如下所示:
List<String> list = Arrays.asList(new String[]{"a", "b", "c"});
或者只是传递将自动映射到数组的变量参数:
List<String> list = Arrays.asList("a","b","c");
答案 2 :(得分:10)
你可以尝试
List<String> list = Arrays.asList(new String[] {"a","b","c"});