Por qué funciona esto:Lista de inicialización <> con Arrays.asList
String[] array = {"a", "b", "c"};
List<String> list = Arrays.asList(array);
pero esto no es así:
List<String> list = Arrays.asList({"a","b","c"});
Por qué funciona esto:Lista de inicialización <> con Arrays.asList
String[] array = {"a", "b", "c"};
List<String> list = Arrays.asList(array);
pero esto no es así:
List<String> list = Arrays.asList({"a","b","c"});
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".
Puede intentar
List<String> list = Arrays.asList(new String[] {"a","b","c"});
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");
No, puede hacer 'Arrays.asList ("a", "b", "c");', que es más corto, y más similar a la pregunta original de la OP. –
Lo que dijo Thomas sigue siendo válido y no merece un voto negativo. – Jeshurun
No, lo que él dijo es "Usted * tiene * que escribir", lo cual es falso, entonces, sí, * merece * un voto a la baja. –