List.addAll бросает UnsupportedOperationException при попытке добавить другой список
List.addAll бросает UnsupportedOperationException
при попытке добавить другой список.
List<String> supportedTypes = Arrays.asList("6500", "7600"};
и в цикле, который я делаю,
supportedTypes.addAll(Arrays.asList(supportTypes.split(","))); //line 2
поддержка чтенияТипы из файла.
Но строка 2 выбрасывает UnsupportedOperationException
, но я не могу определить, почему?
Я добавляю еще один список в список, то почему эта операция не поддерживается?
Ответы
Ответ 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 возвращает список фиксированного размера, поддерживаемый указанным массивом.