转载标明出处: 公司内部博客,作者 居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相关推荐

  1. 安装robot.js踩坑记录【含出坑指南】

    最近在写一个node的小项目,要用到模拟鼠标键盘的操作,于是找到了robot.js. 安装库的时候遇到了一些问题,由于官方文档里并没有详细指引,故自行解决后记录下来,希望能帮助到别人. 1. robo ...

  2. 如何转obj_Java 开发中如何正确的踩坑,看完这个你可以避免50%的错误

    为什么说一个好的员工能顶 100 个普通员工 我们的做法是,要用最好的人.我一直都认为研发本身是很有创造性的,如果人不放松,或不够聪明,都很难做得好.你要找到最好的人,一个好的工程师不是顶10个,是顶 ...

  3. 一份12W+字数的踩坑总结,覆盖前端、后端、运维三个维度,一步一个脚印,我们一起成长!(实时更新)

    文章目录 1.1 Css/Scss 1.1.1 层叠性 1.1.2 继承性 1.1.3 优先级 1.1.4 backgroud设置背景图片样式顺序决定是否生效 1.1.5 Vue在元素中要使用当前vu ...

  4. 【日常踩坑】Android机微信webview中页面跳转的问题

    今天分享一个前端君踩到的小坑,在webapp中,如果我们要代码实现刷新当前页面的话,相信很多人都习惯用: window.location.reload(); 使用 .reload() 方法实现刷新页面 ...

  5. java 是否含有日文_Java踩坑记系列之Arrays.asList

    阅读本文大概需要6分钟 1. java.util.Arrays.asList()可以方便的把一个数组转成ArrayList集合来使用,但是如果对集合使用增加或删除元素的操作将会报错,如下: List ...

  6. vantUI 弹出层(轻提示)案例 - 踩坑篇

    vantUI 弹出层(轻提示)- 踩坑篇 可自定义项: 显示时长 显示内容 显示何时消失 代码 · 实例: if(this.checkedAgreement == false){this.$toast

  7. 踩了无数个坑,才写出稿费1000的文章

    踩了无数个坑,才写出稿费1000的文章,早知道这些就好了,强烈推荐给小白的你. 挣钱难,大家都想靠副业多赚一份收入,比如现在流行的写作,可很多小伙伴都像无头苍蝇般,想要撞大运,殊不知已经踩到了坑,来看 ...

  8. Java 线上惨痛踩坑记录,你也一定遇到过

    线上问题年年有,今年特别多.记几次线上惨痛的踩坑记录,希望大家以史为鉴. 1. 包装类型自动解箱导致空指针异常 public int getId() { Integer id = null; retu ...

  9. Java线上惨痛踩坑记录,你也一定遇到过

    线上问题年年有,今年特别多.记几次线上惨痛的踩坑记录,希望大家以史为鉴. 1. 包装类型自动解箱导致空指针异常 public int getId() {Integer id = null;return ...

最新文章

  1. 【机器学习入门】(8) 线性回归算法:正则化、岭回归、实例应用(房价预测)附python完整代码和数据集
  2. mac上安装python详细教程_mac安装python环境
  3. 也谈谈:《设计师如何掌握主动权》读后感
  4. 页面浏览事件之 $AppViewScreen 全埋点
  5. 直接排序python实现
  6. PHP------继承、多态
  7. eclipse的编辑器样式风格设置
  8. 翻译: 如何使用 Xcode 的内存图调试器检测 iOS 内存泄漏并保留周期
  9. 几款流行的开源后台管理框架
  10. CS之攻击菜单详解-后门生成与上线
  11. 网红王思聪数字屏保下载
  12. GMT和UTC时区概念
  13. CUDA加速——共享内存介绍及其应用
  14. 华为云学院新春大礼包:场景化微认证上新了!
  15. 九八k用计算机打出来的音乐,背景音乐大全
  16. 三个数降序排列(汇编)
  17. 如何区分光猫、路由器和交换机?
  18. 新月音标_又一个新月?
  19. 存储器——嵌入式系统
  20. Codeforces Round #509 (Div. 2) F. Ray in the tube(思维)

热门文章

  1. 新版标准日本语初级_第四十七课
  2. 关于poi读取word文档修改后输出乱码问题 poi word 乱码
  3. Python定义字典,写联系人及电话号码,查找……
  4. 松鼠的新家 51Nod - 3116(点差分)
  5. 五个很酷的平铺窗口管理器
  6. win10运行在哪里_微软原版win10家庭版系统下载_win10教程
  7. CAPL语言编译的那些事
  8. 编程规范:单下划线、双下划线、头尾双下划线
  9. 硬件设计25之什么是霍尔信号?
  10. harbor使用免费证书配置https