踩坑List.addAll抛出UnsupportedOperationException
转载标明出处: 公司内部博客,作者 居xx, 在此表示感谢
1、我自己遇到的问题
try { // 不加try..catch报错 java.lang.UnsupportedOperationException: null ,原因未知list.addAll(a.getResult());list.addAll(b.getResult());list.addAll(c.getResult());list.addAll(d.getResult());list.addAll(e.getResult());} catch (Exception exception) {LOGGER.info2("get List<alarmVo> result error: {}", exception.getMessage());}
a~e这几个都是从数据库查询出来的PageResult类型的分页查询结果;
且他们List里面的vo类型是一模一样的
2、分析原因
- 没踩过坑的同学可能看到这里没发现啥大问题,我们在将数组转成List的时候也经常会这么做,但是执行这段代码会抛出UnsupportedOperationException
- 看一下上面的报错信息得知是在AbstractList.java:148位置报的错,追溯一下代码
- 从注释里面我们读到,如果不重写这个add(int,e)方法的话就会抛出上面的异常。
- 但是为啥为走到这个父类的方法,子类没有重写add方法?
- 答案确实是没有重写,问题其实是出在这一行
List<String> values = Arrays.asList(keys[1].split(","));
- Arrays.asList(strings);方法返回的List对象不是我们常见的ArrayList,而是Arrays的一个内部类
- 让我们看一下这个内部类都有哪些方法
- 其中并没有重写add方法,所以在调用add方法的时候会执行父类的add方法(也就是上面我们截图的方法),这样报错的原因就找到了。
3、问题解决
找到原因后,问题就好解决了,我们把返回的对象处理一下 转成我们熟悉的List实现类就可以了
方法一:
List<String> list = new ArrayList<>(Arrays.asList(str));
方法二:
List<String> list = new ArrayList<>();
list.addAll(Arrays.asList(str));
搞定
踩坑List.addAll抛出UnsupportedOperationException相关推荐
- 安装robot.js踩坑记录【含出坑指南】
最近在写一个node的小项目,要用到模拟鼠标键盘的操作,于是找到了robot.js. 安装库的时候遇到了一些问题,由于官方文档里并没有详细指引,故自行解决后记录下来,希望能帮助到别人. 1. robo ...
- 如何转obj_Java 开发中如何正确的踩坑,看完这个你可以避免50%的错误
为什么说一个好的员工能顶 100 个普通员工 我们的做法是,要用最好的人.我一直都认为研发本身是很有创造性的,如果人不放松,或不够聪明,都很难做得好.你要找到最好的人,一个好的工程师不是顶10个,是顶 ...
- 一份12W+字数的踩坑总结,覆盖前端、后端、运维三个维度,一步一个脚印,我们一起成长!(实时更新)
文章目录 1.1 Css/Scss 1.1.1 层叠性 1.1.2 继承性 1.1.3 优先级 1.1.4 backgroud设置背景图片样式顺序决定是否生效 1.1.5 Vue在元素中要使用当前vu ...
- 【日常踩坑】Android机微信webview中页面跳转的问题
今天分享一个前端君踩到的小坑,在webapp中,如果我们要代码实现刷新当前页面的话,相信很多人都习惯用: window.location.reload(); 使用 .reload() 方法实现刷新页面 ...
- java 是否含有日文_Java踩坑记系列之Arrays.asList
阅读本文大概需要6分钟 1. java.util.Arrays.asList()可以方便的把一个数组转成ArrayList集合来使用,但是如果对集合使用增加或删除元素的操作将会报错,如下: List ...
- vantUI 弹出层(轻提示)案例 - 踩坑篇
vantUI 弹出层(轻提示)- 踩坑篇 可自定义项: 显示时长 显示内容 显示何时消失 代码 · 实例: if(this.checkedAgreement == false){this.$toast
- 踩了无数个坑,才写出稿费1000的文章
踩了无数个坑,才写出稿费1000的文章,早知道这些就好了,强烈推荐给小白的你. 挣钱难,大家都想靠副业多赚一份收入,比如现在流行的写作,可很多小伙伴都像无头苍蝇般,想要撞大运,殊不知已经踩到了坑,来看 ...
- Java 线上惨痛踩坑记录,你也一定遇到过
线上问题年年有,今年特别多.记几次线上惨痛的踩坑记录,希望大家以史为鉴. 1. 包装类型自动解箱导致空指针异常 public int getId() { Integer id = null; retu ...
- Java线上惨痛踩坑记录,你也一定遇到过
线上问题年年有,今年特别多.记几次线上惨痛的踩坑记录,希望大家以史为鉴. 1. 包装类型自动解箱导致空指针异常 public int getId() {Integer id = null;return ...
最新文章
- 【机器学习入门】(8) 线性回归算法:正则化、岭回归、实例应用(房价预测)附python完整代码和数据集
- mac上安装python详细教程_mac安装python环境
- 也谈谈:《设计师如何掌握主动权》读后感
- 页面浏览事件之 $AppViewScreen 全埋点
- 直接排序python实现
- PHP------继承、多态
- eclipse的编辑器样式风格设置
- 翻译: 如何使用 Xcode 的内存图调试器检测 iOS 内存泄漏并保留周期
- 几款流行的开源后台管理框架
- CS之攻击菜单详解-后门生成与上线
- 网红王思聪数字屏保下载
- GMT和UTC时区概念
- CUDA加速——共享内存介绍及其应用
- 华为云学院新春大礼包:场景化微认证上新了!
- 九八k用计算机打出来的音乐,背景音乐大全
- 三个数降序排列(汇编)
- 如何区分光猫、路由器和交换机?
- 新月音标_又一个新月?
- 存储器——嵌入式系统
- Codeforces Round #509 (Div. 2) F. Ray in the tube(思维)