У меня есть кодКогда List.addAll() выбрасывает IllegalStateException?
private List<Field> subFields;
private Collection<Field> subFieldsCollection;
...
try {
if (subFields == null && subFieldsCollection != null && !subFieldsCollection.isEmpty()) {
subFields = new ArrayList<>();
subFields.addAll(subFieldsCollection);
}
} catch (IllegalStateException e) {
...
}
и мне интересно, как это может произойти за IllegalStateException
быть выброшен. По-видимому, это случилось с пользователем моего приложения, но я не могу отслеживать, что было не так.
Документация Collection.addAll()
говорит:
IllegalArgumentException - , если не все элементы могут быть добавлены в это время из-за вставки ограничения
Но каковы ограничения вставки?
Я думаю, это зависит от конкретного типа коллекции. Я использую ArrayList, так что давайте проверим документы для addAll()
из List
интерфейса:
IllegalArgumentException - если некоторое свойство элемента указанной коллекции не мешает ему быть добавлены в этот список
Ну, какое свойство элемента может помешать добавлению элемента в список? Мои обе коллекции одного типа, я должен иметь возможность добавлять нулевые значения.
Может кто-нибудь объяснить это мне, пожалуйста?
Я просто стреляю в темноту здесь, но может ли это не быть связано с параллелизмом? – Mackiavelli
Не совсем ясно, какая версия Java, которую вы используете, но исходный код для Java SE 6 никогда не выдает это исключение из 'addAll()' кроме косвенно при обращении к 'Collection'. Вы видели трассировку стека и уверены ли вы, что это исключение? – Persixty
Пожалуйста, добавьте трассировку стека исключения в свой вопрос. – VGR