Подтвердить что ты не робот

Инициализировать список <> с помощью массива Arrays.asList

Почему это работает:

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

но это не так:

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

Ответ 1

Это короткая рука, доступная только при построении и назначении массива.

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

Вы можете сделать это, хотя:

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

Поскольку asList может принимать аргументы "vararg".

Ответ 2

Вы можете попробовать

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

Ответ 3

Ваш вопрос в том, почему один работает, а другой нет, не так ли?

Ну, причина в том, что {"a","b","c"} не является допустимым выражением Java, поэтому компилятор не может его принять.

Похоже, вы подразумеваете, что хотите передать инициализатор массива без предоставления выражения полного массива (JLS 15.10).

Правильные выражения создания массива есть, как указывали другие:

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

Как указано в JLS 10.6 Инициализаторы массивов или

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

Как указано в JLS 15.10 Выражения создания массива.

Этот второй полезен для inline, поэтому вы можете передать его вместо переменной массива напрямую.

Так как метод asList в Arrays использует переменные аргументы, а выражения переменных аргументов отображаются в массивы, вы можете либо передать встроенный массив, как в:

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

Или просто передайте переменные, которые будут автоматически сопоставлены с массивом:

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