java.lang.UnsupportedOperationException解决方法

java.lang.UnsupportedOperationException

遇到这个异常,原因多半是将Arrays.asList()当成java.util.ArrayList使用了,并且调用了add或者remove的方法,如

List list = Arrays.asList(123, 456);
list.add(789);

解决方法:只要将Arrays.asList()替换成java.util.ArrayList使用即可解决问题。如下:

List list = new ArrayList(Arrays.asList(123, 456));
list.add(789);
说明

Arrays.asList()返回的虽然也是ArrayList,但却是Arrays内定义的内部类,和java.util.ArrayList是两个不同的类。

Arrays内部类ArrayListjava.util.ArrayList
继承自 AbstractList ,实现 RandomAccess,java.io.Serializable继承自 AbstractList ,实现 RandomAccess,java.io.Serializable,并且实现了List, Cloneable
实现了set、get 方法实现了add、remove、set、get 方法

两者都是继承java.uitl.AbstractList,在java.uitl.AbstractList中常用的addremovesetget是没有具体实现的,默认会抛出java.lang.UnsupportedOperationException。如下:

在这里插入图片描述

Arrays内部类ArrayList内是没有实现addremove,所以调用的时候会抛出java.lang.UnsupportedOperationException,必须使用java.util.ArrayList才行。

#####两者结构

Arrays内部类ArrayList

在这里插入图片描述

java.util.ArrayList

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值