java 数组转list后,修改元素报错 UnsupportedOperationException

java 数组转list后,修改元素报错:UnsupportedOperationException

代码报错如下:

java 数组转list后,修改元素报错 UnsupportedOperationException_第1张图片数组转list使用的方法是:

Arrays.asList(a)

这个方法能将数组转为list,其实现为:

java 数组转list后,修改元素报错 UnsupportedOperationException_第2张图片

从源码中可以看到,这个方法返回的并不是真正的ArrayList,而是Arrays类中自己的内部类ArrayList,此类并未实现任何修改元素的方法,这种实现方式是设计模式中适配器的体现,将接口进行了转换。

而在它所继承的抽象类 AbstractList 中,修改元素的方法均未实现,并且抛出异常。

java 数组转list后,修改元素报错 UnsupportedOperationException_第3张图片

所以明白了出错原因,那修改也就很容易了。只需要在调用此方法之后,再调用真正ArrayList的构造方法,转化为真正的ArrayList便可以进行修改元素操作了。

java 数组转list后,修改元素报错 UnsupportedOperationException_第4张图片

你可能感兴趣的:(java)