为什么会UnsupportedOperationException异常?

博客探讨了在Java中使用Arrays.asList()转换数组并尝试添加元素时遇到的UnsupportedOperationException异常。问题源于asList()返回的并非标准的ArrayList实例,导致无法执行add或remove操作。解决方案是将数组转换为真正的ArrayList对象。文章深入源码,详细解释了异常产生的原因和正确的转换方法。
摘要由CSDN通过智能技术生成

话不多说,上代码

工作台输出

 这是为什么呢??? 不就是向集合里面添加数据吗??

首先我们来看看这个异常UnsupportedOperationException,这个异常的意思是不支持操作,

说明这个add方法有问题,我们可以研究一下Arrays.asList()这个方法的源码

发现返回了ArrayList,继续进到ArrayList

 

 发现了这个好像不是ArrayList类,我们看看原始的ArrayList类

 发现确实不一样,于是我们找这个静态ArrayList的add方法,发现这个类没有add方法,于是找到AbstractList这个父类,找到add方法

 

 又调用了add(size(),e)这个方法,继续点进去

 这就明白了!!!

总结:如果在调用 asList 方法转换对象的时候我们转换后的对象已经不再是 ArrayList 这个对象了,因为它们并不是我们熟悉的 ArrayList ,这个时候是不能对转化出来的结果进行 add 或者 remove 操作的。

解决方法:将数组转换来的集合放入ArrayList集合中

 

结束结束!!!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值