一、问题现象
前几天用用反射的时候,用了一下 Arrays.asList() 方法,将获取到的属性数组转换成 list
后面需要对这个属性 list 里面的元素进行操作,发现会抛出一个异常
UnsupportedOperationException
那么到底是什么原因呢?我们继续往下深究
二、问题原因
我们查看一下 asList() 方法的源码
实际上是 new 了一个 ArrayList(),然后这个 ArrayList 是一个内部类,它继承了一个 AbstractList 类
这个 AbstractList 类里面虽然有重写 add 、remove 等方法,但是方法体内最后都会抛出一个异常 UnsupportedOperationException
这个 asList new 出来的 ArrayList 和我们平常使用的 ArrayList 是不一样的,平常我们使用的 ArrayList 里面重写是帮我们写好了相应的方法的,所以我们能够进行 add、remove 等操作了。
三、解决方案
重新写一个我们平时用的 ArrayList,将 asList 转换的 list 全部加载进来,再去进行操作