UnsupportedOperationException的分析与解决方案

来源:互联网 发布:批量sql注入检测工具 编辑:程序博客网 时间:2024/05/01 11:31

 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

原创粉丝点击