2012-05-23 135 views

回答

54

这是一个短手只提供构造和分配的阵列时。

String[] array = {"a", "b", "c"}; 

你可以尽管这样做:

List<String> list = Arrays.asList("a","b","c"); 

由于asList可以采取 “可变参数” 的论点。

11

您可以尝试

List<String> list = Arrays.asList(new String[] {"a","b","c"}); 
+1

否,可以做'Arrays.asList( “A”, “b”, “C”);',它是较短的,更类似于OP的原来的问题。 –

+6

托马斯说什么仍然有效,不值得赞赏。 – Jeshurun

+0

不,他说的是“你*有*要写”,这是不真实的,所以,它*确实值得赞赏。 –

11

你的问题是,为什么一个作品和其他没有,对不对?

那么,原因是{"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说明。

这第二个对于内联很有用,所以你可以直接传递它来代替数组变量。

由于ArraysasList方法使用可变参数和可变参数表达式映射到阵列中,既可以通过内嵌阵列如:

List<String> list = Arrays.asList(new String[]{"a", "b", "c"}); 

或者简单地传递变量参数,就可以自动地映射到一个数组:

List<String> list = Arrays.asList("a","b","c");