java.lang.UnsupportedOperationException异常解决方法

71 阅读1分钟

你们好,我是金金金。

image.png

场景

image.png

  • 可以看见27行这里报错了,看起来是add方法所导致

排查

  1. 可以看到list2Arrays.asList得到的返回值,我们先看看asList

image.png

可以很清晰的看见 new ArrayList<>() 返回了

  1. 我们来看看new的这个ArrayList是什么

image.png

ArrayList 是一个内部类,继承了AbstractList,我尝试在这个内部类里面搜索add()方法,结果没找到,然后去看了它的父类AbstractList

  1. AbstractList

image.png

导致问题的原因就在此,这里直接抛出了一个异常,所以这也是我们使用add()方法为什么会报错的原因!

造成error的原因

  1. AbstractListadd方法抛出的异常

解决

  • 我们知道导致问题的原因是AbstractListadd方法抛出的异常,如果你确实想用,那我们肯定不能直接使用Arrays.asList返回的list去使用,不然肯定抛出异常

  • new ArrayList包一层即可。

image.png

这里的ArrayListjava.util.ArrayList里面的,java.util.ArrayList里面重写了这个add方法所以可以用

image.png

总结

主要是Arrays.asList方法返回的ArrayList内部类的父类AbstractList里面的add方法抛出异常所导致,我们只需要用new ArrayList包裹一层即可!

  • 编写有误还请大佬指正,万分感谢。