Ros*_*atl 12 java exception list arraylist
我有一个代码从一些分页字符串数据读取列表.我不明白 - 为什么在addAll()上抛出UnsupportedOperationException以及为什么它是随机行为?
我知道创建目标ArrayList并且不添加到返回的那个解决了问题,我正在寻找更好的理解而不是修复.
List<Event> eventList = eventTable.getEvents(); // returns ArrayList
while (hasNextPage()) {
goToNextPage();
eventList.addAll(eventTable.getEvents());
}
Run Code Online (Sandbox Code Playgroud)
aio*_*obe 18
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;
}
Run Code Online (Sandbox Code Playgroud)
(在你的评论中你写的// returns ArrayList
.我不知道你从哪里得到这个,但我确实知道一件事:一个ArrayList
人总会支持这个addAll
操作.)
正如你所提到的,解决问题的正确方法是做
List<Event> eventList = new ArrayList<Event>(eventTable.getEvents());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11796 次 |
最近记录: |