java 数组转list后,修改元素报错:UnsupportedOperationException
代码报错如下:
数组转list使用的方法是:
Arrays.asList(a)
这个方法能将数组转为list,其实现为:
从源码中可以看到,这个方法返回的并不是真正的ArrayList,而是Arrays类中自己的内部类ArrayList,此类并未实现任何修改元素的方法,这种实现方式是设计模式中适配器的体现,将接口进行了转换。
而在它所继承的抽象类 AbstractList 中,修改元素的方法均未实现,并且抛出异常。
所以明白了出错原因,那修改也就很容易了。只需要在调用此方法之后,再调用真正ArrayList的构造方法,转化为真正的ArrayList便可以进行修改元素操作了。