1. 业务场景
使用Arrays.asList()转List后,添加或删除元素异常,报错显示【UnsupportedOperationException异常】
2. 问题原因
Arrays.asList()返回值为List,实际上是创建了一个ArrayList,但此ArrayList为Arrays类的一个内部类,并不是我们经常使用的 java.util.ArrayList,如图:
此内部类继承了 AbstractList,但很多方法并没有重写,包括remove、add,在其父类 AbstractList中,很多方法又是直接抛出UnsupportedOperationException异常的,因此会出现上述情况
3. 解决方案
- 使用其他工具类,如hutool工具类中的ListUtil.toList()
- 将转换过后的ArrayList(内部类)转换为 java.util.ArrayList