List<Event>
не обязательно ArrayList<Event>
.(Однако верно и обратное.)
Причина, по которой вы иногда получаете UnsupportedOperationException
, заключается в том, что eventTable.getEvents()
иногда возвращает список, который поддерживает addAll
, а иногда нет.
Например, реализация getEvents
может выглядеть следующим образом:
if (noEventsAvailable) {
return Collections.emptyList();
} else {
List<Event> toReturn = new ArrayList<Event>();
// populate list...
return toReturn;
}
(В своем комментарии вы пишете // returns ArrayList
. Я не знаю, откуда вы это взяли, но я точно знаю одно: ArrayList
будет всегда поддерживать операцию addAll
.)
Правильный способ ее решения, как вы упоминаете, сделать
List<Event> eventList = new ArrayList<Event>(eventTable.getEvents());