执行下面代码时报错:

List centerList =WebConstants.SUPPORT_BIG_CENTERS_LIST; // WebConstants.SUPPORT_BIG_CENTERS_LIST是Arrays.asList转化来的

centerList.removeAll(WebConstants.SUPPORT_CENTERS_LIST);

centerList.addAll(WebConstants.SUPPORT_CENTERS_LIST);

最后一行报错:

java.lang.UnsupportedOperationException: nullat java.util.AbstractList.add(AbstractList.java:148) ~[na:1.8.0_101]

at java.util.AbstractList.add(AbstractList.java:108) ~[na:1.8.0_101]

at java.util.AbstractCollection.addAll(AbstractCollection.java:344) ~[na:1.8.0_101]

查看Arrays$ArrayList的源代码,如下(1.8版本):

private static class ArrayList extends AbstractList

implementsRandomAccess, java.io.Serializable

{private static final long serialVersionUID = -2764017481108945198L;private finalE[] a;

ArrayList(E[] array) {

a=Objects.requireNonNull(array);

}

@Overridepublic intsize() {returna.length;

}

@OverridepublicObject[] toArray() {returna.clone();

}

@Override

@SuppressWarnings("unchecked")public T[] toArray(T[] a) {int size =size();if (a.length

(Class extends T[]>) a.getClass());

System.arraycopy(this.a, 0, a, 0, size);if (a.length >size)

a[size]= null;returna;

}

@Overridepublic E get(intindex) {returna[index];

}

@Overridepublic E set(intindex, E element) {

E oldValue=a[index];

a[index]=element;returnoldValue;

}

@Overridepublic intindexOf(Object o) {

E[] a= this.a;if (o == null) {for (int i = 0; i < a.length; i++)if (a[i] == null)returni;

}else{for (int i = 0; i < a.length; i++)if(o.equals(a[i]))returni;

}return -1;

}

@Overridepublic booleancontains(Object o) {return indexOf(o) != -1;

}

@Overridepublic Spliteratorspliterator() {returnSpliterators.spliterator(a, Spliterator.ORDERED);

}

@Overridepublic void forEach(Consumer super E>action) {

Objects.requireNonNull(action);for(E e : a) {

action.accept(e);

}

}

@Overridepublic void replaceAll(UnaryOperatoroperator) {

Objects.requireNonNull(operator);

E[] a= this.a;for (int i = 0; i < a.length; i++) {

a[i]=operator.apply(a[i]);

}

}

@Overridepublic void sort(Comparator super E>c) {

Arrays.sort(a, c);

}

}

进入父类找下addAll方法:

public boolean addAll(int index, Collection extends E>c) {

rangeCheckForAdd(index);boolean modified = false;for(E e : c) {

add(index++, e);

modified= true;

}returnmodified;

}

实现只存在于父类中,如下所示:

public void add(intindex, E element) {throw newUnsupportedOperationException();

}

父类AbstractList add方法直接抛出异常。

所以问题就在这里,我们改下代码,如下就不报错了:

List centerList = new ArrayList<>();

if (null != WebConstants.SUPPORT_BIG_CENTERS_LIST) {  //addAll的目标是null会报错

centerList.addAll(WebConstants.SUPPORT_BIG_CENTERS_LIST);

}

if (null != WebConstants.SUPPORT_CENTERS_LIST) {

centerList.removeAll(WebConstants.SUPPORT_CENTERS_LIST);

centerList.addAll(WebConstants.SUPPORT_CENTERS_LIST);

}

它调用的就是arrayList的addAll方法了

java里面add报错_java.util.Arrays$ArrayList addAll报错相关推荐

  1. java add方法实例_java.util.TreeSet.add()方法实例

    全屏 add(Object o)方法用于将指定的元素添加到这个集合,如果它不存在. 声明 以下是java.util.TreeSet.add()方法的声明.public boolean add(Obje ...

  2. java找不到对象报错_java找不到对象报错

    java找不到对象报错 [2021-02-04 02:18:22]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/(\ ...

  3. JAVA的静态方法的运算_java. util.Math类是数学相关的工具类,里面提供了大量的静态方法,完成与数学运算相关的操作。...

    java. util.Math类是数学相关的工具类,里面提供了大量的静态方法,完成与数学运算相关的操作. /* public static double abs ( double num):获取绝对值 ...

  4. java length 使用方法 例题_java.util.BitSet.length()方法实例

    java.util.BitSet.length()方法返回此BitSet的"逻辑大小":在BitSet中最高设置位加一的索引.如果BitSet中没有包含的位,返回0. 声明 以下是 ...

  5. java date只保留年月日_java.util.Date、java.sql.Date、java.sql.Timestamp区别和总结

    在web开发中,避免不了对日期的操作,就几种常见的日期操作做个总结(部分参考网络,在此表示感谢): java.util.Date.java.sql.Datej.java.sql.Timestamp j ...

  6. java date 时分秒丢失_JAVA util date转 sql DATE 时分秒丢失

    Java中有两个Date类,一个是java.util.Date通常情况下用它获取当前时间或构造时间,另一个是java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分.两个类型的时间 ...

  7. java数组空指针一场_Java使用自定义类数组报空指针异常

    一开始自定义了一个学生类,类里面有几个属性.因为有很多个学生,所以想将这个类声明成数组使用,但是当我通过不同的下标给数组里不同对象赋值的时候一直报空指针异常 一开始代码是这样的 package _4_ ...

  8. java堆按照最小排序_java.util.TaskQueue的最小堆排序算法的应用

    其中fixup和fixdown就是堆排序的使用. /** * This class represents a timer task queue: a priority queue of TimerTa ...

  9. java中timer类包_Java~util包中Timer的使用, 演示cancel方法 和 对比schedule和scheduleAtFixedRate方法...

    Timer Timer类的主要作用就是设置计划任务,但封装任务的类却是TimerTask类 执行计划任务的代码要放人TimerTask的子类中,因为TimerTask是一个抽象类.而且要重写其run方 ...

最新文章

  1. C语言基本数据结构之二(二叉树的三种遍历,节点数以及深度算法)
  2. Ubuntu安装Nginx+PHP5.6+MySQL5.6
  3. 英国科学家研究用AI预测地震:未来或提前一周预报
  4. 关于bootstrap的modal弹出层嵌套子Modal所引发的血案(转)
  5. 埃及分数(codevs 1288)
  6. 力扣-5773(243周赛)插入后的最大值
  7. GPS从入门到放弃(十九) --- 精密星历
  8. 单片机喇叭如何响出报警声音 C语言程序,单片机报警器声音产生的方法(报警声音)...
  9. 用word保存出高清的pdf文件
  10. 为windows server 2008 r2系统安装笔记本内置摄像头驱动的过程
  11. 随机抖音接口php,【php】下载抖音无水印视频接口
  12. 面对互联网寒冬,程序员能够做什么?
  13. python初学入门————列表
  14. mysql 自定义插件调试
  15. dry的原理_6、干货!老司机带你利用高中化学知识理解蚀刻(dry etch)选择比(selectivity)原理......
  16. Cesium 两点之间的直线距离
  17. 浏览器怎么截长图?怎么使用浏览器截长图?
  18. Unity —— 百度人脸识别SDK使用
  19. 计算机网络被病毒攻击怎么办,电脑被病毒入侵了怎么办
  20. Java实现寻找二维数组的鞍点

热门文章

  1. 配置WINDOWS群集
  2. 办公自动化及工作流技术
  3. java ee 值范围_JAVAEE之内置对象和属性范围
  4. 数据结构与算法——二叉树、堆、优先队列
  5. chrome解决跨域(CORS)问题---chrome插件
  6. Java Hashtable keySet()方法与示例
  7. sim800 模式切换_SIM的完整形式是什么?
  8. c++ stl 获取最小值_如何在C ++ STL中找到向量的最小/最小元素?
  9. markdown 流程图_测试了12款Markdown编辑器,推荐一个最好用的!
  10. matlab写字,Matlab实现鼠标写字代码