你们好,我是金金金。
场景
- 可以看见
27行这里报错了,看起来是add方法所导致
排查
- 可以看到
list2是Arrays.asList得到的返回值,我们先看看asList
可以很清晰的看见
new ArrayList<>()返回了
- 我们来看看
new的这个ArrayList是什么
ArrayList是一个内部类,继承了AbstractList,我尝试在这个内部类里面搜索add()方法,结果没找到,然后去看了它的父类AbstractList
- AbstractList
导致问题的原因就在此,这里直接抛出了一个异常,所以这也是我们使用
add()方法为什么会报错的原因!
造成error的原因
AbstractList类add方法抛出的异常
解决
-
我们知道导致问题的原因是
AbstractList类add方法抛出的异常,如果你确实想用,那我们肯定不能直接使用Arrays.asList返回的list去使用,不然肯定抛出异常 -
用
new ArrayList包一层即可。
这里的
ArrayList是java.util.ArrayList里面的,java.util.ArrayList里面重写了这个add方法所以可以用
总结
主要是
Arrays.asList方法返回的ArrayList内部类的父类AbstractList里面的add方法抛出异常所导致,我们只需要用new ArrayList包裹一层即可!
- 编写有误还请大佬指正,万分感谢。