为什么这工作:初始化列表<>与Arrays.asList
String[] array = {"a", "b", "c"};
List<String> list = Arrays.asList(array);
但这并不:
List<String> list = Arrays.asList({"a","b","c"});
为什么这工作:初始化列表<>与Arrays.asList
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
可以采取 “可变参数” 的论点。
您可以尝试
List<String> list = Arrays.asList(new String[] {"a","b","c"});
你的问题是,为什么一个作品和其他没有,对不对?
那么,原因是{"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说明。
这第二个对于内联很有用,所以你可以直接传递它来代替数组变量。
由于Arrays
的asList
方法使用可变参数和可变参数表达式映射到阵列中,既可以通过内嵌阵列如:
List<String> list = Arrays.asList(new String[]{"a", "b", "c"});
或者简单地传递变量参数,就可以自动地映射到一个数组:
List<String> list = Arrays.asList("a","b","c");
否,可以做'Arrays.asList( “A”, “b”, “C”);',它是较短的,更类似于OP的原来的问题。 –
托马斯说什么仍然有效,不值得赞赏。 – Jeshurun
不,他说的是“你*有*要写”,这是不真实的,所以,它*确实值得赞赏。 –