UnsupportedOperationException的分析与解决方案

 UnsupportedOperationException的分析与解决方案

 

当你在操作List对象时,可能会遇到类似这样的异常。
java.lang.UnsupportedOperationException
 at java.util.AbstractList.remove(Unknown Source)
 at java.util.AbstractList$Itr.remove(Unknown Source)
 at java.util.AbstractCollection.remove(Unknown Source)

在后来找问题中,我突然想到了以前的一段代码出现的问题。
那就是一个方法
public List<XXXX> getXXXX() {
 return Arrays.asList(objectArray);
}

其中,objectArray是一个对象数组, 返回的是Object[].我为了方便,偶然的机

会我就使用了Arrays.asList()方法。结果没有编译异常。当我在运行的时候,

就抛出了不能转换的异常。大致是Object转换为XXXX对象转换异常。

其实,从异常信息可以看出问题的根本是Arrays.asList()方法返回的是一个

AbstractList对象,而并非是ArrayList对象。

异常的根本已经找到了。接下来就讲讲怎么解决这样的异常了。
我的方法是在方法体内定义一个临时List对象,用了ArrayList。
List l = new ArrayList();
当然了可以范型化
List<XXXX> l = new ArrayList<XXXX>();

然后,再用一个for循环来加入到这个l列表中,并最终返回这个列表。

完成代码:

public List<XXXX> getXXXX() {
 List<SysRole> list = new ArrayList<SysRole>();

 for(Object o : objectArray) {
  SysRole user = (SysRole)o;
   
  list.add(user);
 }

 return list;
}

这样就解决了这个异常了。

另外还有一篇英文的连接,大家可以看看。

http://www.theserverside.com/discussions/thread.tss?thread_id=38493

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值