前方bug出没,记录一次解决UnsupportedOperationException异常的过程!
前言
开发工作者,不是在写Bug的路上,就是在改Bug的路上,很多同学在遇到bug的时候很懵,不知道要怎么处理,而且也无法复现,今天耀哥就给大家复现一个常见的bug,一起来看看怎么解决吧!
一. bug 重现
近日耀哥的一个学生,在写代码的过程中,使用工具类 Arrays . asList() 把数组转换成集合,然后他想往数组转换的集合中再添加新的元素,结果莫名其妙的抛出了 UnsupportedOperationException 的异常.
核心代码如下:
运行结果如下

二. bug原因分析
打开Arrays.asList 这个方法的源代码我们可以发现:asList 的返回对象是一个 Arrays 内部类,并没有实现集合的修改方法。Arrays . asList 体现的是适配器模式,只是转换接口,后台的数据仍是数组。
三. bug 修改
我们只要把由数组转成的集合,通过ArrayList的构造方法,转成一个新的集合就可以完美解决该问题。
现在这个异常你知道该怎么解决了吗?如果还有什么疑问,可以在评论区给我留言哦。