2012-05-23 11 views

Respuesta

54

Esta es una mano corta sólo está disponible cuando se construye y la asignación de una matriz.

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

Puede hacer esto sin embargo:

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

Como asList puede tomar argumentos "vararg".

11

Puede intentar

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

No, puede hacer 'Arrays.asList ("a", "b", "c");', que es más corto, y más similar a la pregunta original de la OP. –

+6

Lo que dijo Thomas sigue siendo válido y no merece un voto negativo. – Jeshurun

+0

No, lo que él dijo es "Usted * tiene * que escribir", lo cual es falso, entonces, sí, * merece * un voto a la baja. –

11

Su pregunta es por qué se trabaja y el otro no lo hace, ¿verdad?

Bueno, la razón es que {"a","b","c"}no es una expresión de Java válida, y por lo tanto el compilador no puede aceptarlo.

Lo que parece implicar con esto es que desea pasar un inicializador de matriz sin proporcionar un full array creation expression (JLS 15.10).

Las expresiones de creación de matriz correctas son, como otros han señalado:

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

Como se indica en JLS 10.6 Array Initializers, o

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

Como se indica en JLS 15.10 Array Creation Expressions.

Este segundo es útil para alinear, por lo que podría pasarlo en lugar de una variable de matriz directamente.

Dado que el método asList en Arrays utiliza argumentos variables y argumentos variables expresiones se asignan a las matrices, se puede o bien pasar una matriz en línea como en:

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

O simplemente pasar los argumentos variables que serán automáticamente asignada a una matriz:

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