Я хочу добавить длинный объект в список длинных, но получаю ошибку, которую не понимаю
У меня есть следующий минимальный пример:
package main;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<Long> LongList = List.of((long) 3);
LongList.add((long) 2);
}
}
Сообщение об ошибке:
Исключение в потоке "основной" java.lang.UnsupportedOperationException в java.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:142) в java.base/java.util.ImmutableCollections$AbstractImmutableCollection.add(ImmutableCollections.java:147) в main.Test.main(Test.java:10)
Мне нужен формат Long, и я попытался изменить способ преобразования в long. Кроме того, я попытался указать позицию, куда добавить явно, но ничего не изменилось.
О черт. Спасибо.... В List.of не было необходимости... Я просто использую список массивов. Я полностью упустил из виду очевидное.
Из документации List::of (docs.oracle.com):
Возвращает неизменяемый список, содержащий один элемент. Подробнее см. в разделе Неизменяемые списки.
Вот почему вызов add(...)
приводит к UnsupportedOperationException
. Если мы хотим изменить созданный список, нам нужно будет создать изменяемый список, например:
List<Long> LongList = new ArrayList<>(List.of((long) 3));
LongList.add((long) 2);
или:
List<Long> LongList = new ArrayList<>();
LongList.add((long) 3);
LongList.add((long) 2);
Некоторые замечания по коду:
lowerCamelCase
, а не UpperCamelCase
(LongList
-> longList
)2
и 3
к long
мы можем использовать long
-литералы 2L
и 3L
Спасибо :) Я только учусь программировать, поэтому ваши отзывы очень ценны.
Вы инициализировали переменную списка с помощью метода List.of(). Вот почему ваш список неизменен. В него нельзя добавлять предметы. Это также можно увидеть в сообщении об ошибке.
Пожалуйста, инициализируйте переменную с новым экземпляром ArrayList. Затем вы можете начать добавлять в него элементы.
List<Long> longList = new ArrayList<>():
longList.add(3L);
longList.add(2L);
Вы внимательно изучили документацию по
List.of
?