Страницы

Поиск по вопросам

вторник, 23 апреля 2019 г.

Приведение типов java (Arrays.asList ->List )

Допустим есть следующий код:
public static void main(String[] args) { Integer[] mass = {1, 8, 9, 12, 15, 14, 17, 13}; List r = Arrays.asList(mass); System.out.println(r.get(3)); System.out.println(r.remove(3));
}
r.get(3) возвращает какое-то значение а r.remove(3) кидает
UnsupportedOperationException at java.util.AbstractList.remove
r.getClass().getName() возвращает java.util.Arrays$ArrayList
Насколько я понял метод asList класса Arrays возвращает экземпляр внутреннего класса java.util.Arrays$ArrayList который имплементит List метод get вроде нормально там реализован а метод remove перевызывает remove у AbsttactList который кидает данное исключение.
Как можно из массива получить экземпляр нормального Arrayslist или LinkedList?


Ответ

Попробуйте объявить r как ArrayList вместо List. При этом создав новый экземпляр ArrayList через конструктор ArrayList(List list)
ArrayList r = new ArrayList<>( Arrays.asList(mass) );

Комментариев нет:

Отправить комментарий