Я не могу добавить элемент в список? UnsupportedOperationException

java list object add abstract

13709 просмотра

3 ответа

Этот один объект списка кусает меня в задницу

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

Caused by: java.lang.UnsupportedOperationException
        at java.util.AbstractList.add(AbstractList.java:148)
        at java.util.AbstractList.add(AbstractList.java:108)

Строка, выдающая ошибку, незначительна, но здесь она в любом случае:

AdventureLobbies.players.add(args[0].toLowerCase());

Разве я не должен получать к нему доступ статически?

Фактическое объявление переменной:

AdventureLobbies.players = Arrays.asList(rs.getString("players").toLowerCase().split(","));

Есть идеи? В Google не могу найти ничего стоящего.

Автор: Gray Adams Источник Размещён: 12.11.2019 09:29

Ответы (3)


37 плюса

Решение

Arrays.asList () вернет вам неизменяемый список, и поэтому ваше добавление не выполняется. Попробуйте создать список с помощью:

AdventureLobbies.players = new ArrayList(Arrays.asList(rs.getString("players").toLowerCase().split(",")));
Автор: John Farrelly Размещён: 08.04.2012 12:18

5 плюса

В документации Java написано asList @SafeVarargs public static <T> List<T> asList(T... a) «Возвращает список фиксированного размера с заданным массивом»

Ваш список имеет фиксированный размер, то есть он не может увеличиваться или уменьшаться, поэтому при вызове add возникает исключение неподдерживаемой операции.

Автор: user12345613 Размещён: 08.04.2012 12:19

0 плюса

Это исключение хорошо знакомо с доступом к объектам, которые не разрешают доступ в соответствии с правилами языка Java, такими как доступ к неизменяемым объектам, поэтому вместо этого создайте его экземпляр следующим образом:

AdventureLobbies.players = new ArrayList(Arrays.
asList(rs.getString("players").toLowerCase().split(","))); // Perfectly done
Автор: GingerHead Размещён: 08.04.2012 12:26
Вопросы из категории :
32x32