vacio new initialize inicializar array java arrays list collections array-initialization

new - java arraylist syntax



Inicializar lista<> con Arrays.asList (3)

Esta pregunta ya tiene una respuesta aquí:

Por qué funciona esto:

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

pero esto no:

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


Esta es una mano corta solo disponible cuando se construye y asigna una matriz.

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

Puedes hacer esto sin embargo:

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

Como asList puede tomar argumentos "vararg".


Puedes probar

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


Tu pregunta es por qué uno funciona y el otro no, ¿verdad?

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

Lo que parece implicar con esto es que desea pasar un inicializador de matriz sin proporcionar una expresión de creación de matriz completa (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 enlining, por lo que podría pasarlo en lugar de una variable de matriz directamente.

Como el método asList en Arrays usa argumentos variables, y las expresiones de argumentos variables están mapeadas en matrices, puede pasar una matriz en línea como en:

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

O simplemente pase los argumentos variables que se asignarán automáticamente a una matriz:

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