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

List.addAll бросает UnsupportedOperationException при попытке добавить другой список

List.addAll бросает UnsupportedOperationException при попытке добавить другой список.

List<String> supportedTypes = Arrays.asList("6500", "7600"};

и в цикле, который я делаю,

supportedTypes.addAll(Arrays.asList(supportTypes.split(","))); //line 2

поддержка чтенияТипы из файла.

Но строка 2 выбрасывает UnsupportedOperationException, но я не могу определить, почему?

Я добавляю еще один список в список, то почему эта операция не поддерживается?

4b9b3361

Ответ 1

Arrays.asList возвращает список фиксированного размера, поддерживаемый массивом, и вы не можете добавлять к нему элементы.

Вы можете создать изменяемый список, чтобы сделать работу addAll:

List<String> supportedTypes = new ArrayList<String>(Arrays.asList("6500", "7600", "8700"));

Ответ 2

Arrays.asList возвращает список фиксированного размера.

Если вы хотите иметь возможность добавлять элементы в список, выполните следующие действия:

List<String> supportedTypes = new ArrayList<>(Arrays.asList("6500", "7600"});
supportedTypes.addAll(Arrays.asList(supportTypes.split(",")));

Ответ 3

Проблема заключается в том, что метод Arrays.asList возвращает экземпляр java.util.Arrays.ArrayList, который не поддерживает операции добавления/удаления на элементы. Не удивительно, что метод addAll генерирует исключение, потому что метод add для java.util.Arrays.ArrayList определяется как:

public void add(int index, E element) {
    throw new UnsupportedOperationException();
}

Связанный вопрос:

Arrays.asList() Неверный исходный код

Из документация:

Arrays.asList возвращает список фиксированного размера, поддерживаемый указанным массивом.