java 异常java.lang.UnsupportedOperationException
来源:互联网 发布:软件测试并发测试 编辑:程序博客网 时间:2024/05/22 07:52
java 异常java.lang.UnsupportedOperationException
在项目中采用一个枚举的集合,本人采用Collections中的空集合Collections.emptyList()在添加时发生异常:
常见集合如下:
private List<VacationCategory> vacationcategorys = Collections.emptyList();
报错误如下:
-- Encapsulated exception ------------\
java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:131)
at java.util.AbstractList.add(AbstractList.java:91)
at com.unutrip.callcenter.vacation.web.condition.VacationOrderConditionConvertor.setProductStyle(VacationOrderConditionConvertor.java:155)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
..............................
JDK API解释如下:
java.lang.CloneNotSupportedException
不支持克隆异常。当没有实现Cloneable接口或者不支持克隆方法时,调用其clone()方法则抛出该异常。
在网上查一下原因是因为部分集合类型一样但是缺少部分方法或不支持。
如特殊情况如下:
(1)常常使用Arrays.asLisvt()后调用add,remove这些method时出现java.lang.UnsupportedOperationException异常。这是由于:
Arrays.asLisvt() 返回java.util.Arrays$ArrayList, 而不是ArrayList。Arrays$ArrayList和ArrayList都是继承AbstractList,remove,add等method在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。ArrayList override这些method来对list进行操作,但是Arrays$ArrayList没有override remove(int),add(int)等,所以throw UnsupportedOperationException。
解决方法是使用Iterator,或者转换为ArrayList
List arrayList = new ArrayList(list);
(2)
private List<VacationCategory> vacationcategorys = Collections.emptyList();
执行remove,add等method时,抛出此异常,本人将上述代码改为:
private List<VacationCategory> vacationcategorys = new ArrayList<VacationCategory>();
没有此错误,于是我查看一下源代码:
源码如下:
此类在Collections的类中:
/**
* The empty list (immutable). This list is serializable.
*
* @see #emptyList()
*/
public static final List EMPTY_LIST = new EmptyList();
/**
* Returns the empty list (immutable). This list is serializable.
*
* <p>This example illustrates the type-safe way to obtain an empty list:
* <pre>
* List<String> s = Collections.emptyList();
* </pre>
* Implementation note: Implementations of this method need not
* create a separate <tt>List</tt> object for each call. Using this
* method is likely to have comparable cost to using the like-named
* field. (Unlike this method, the field does not provide type safety.)
*
* @see #EMPTY_LIST
* @since 1.5
*/
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
/**
* @serial include
*/
private static class EmptyList
extends AbstractList<Object>
implements RandomAccess, Serializable {
// use serialVersionUID from JDK 1.2.2 for interoperability
private static final long serialVersionUID = 8842843931221139166L;
public int size() {return 0;}
public boolean contains(Object obj) {return false;}
public Object get(int index) {
throw new IndexOutOfBoundsException("Index: "+index);
}
// Preserves singleton property
private Object readResolve() {
return EMPTY_LIST;
}
}
EmptyList此集合竟然没有相应的add,remove等方法
»下一篇:如何去除Android应用中的广告
园龄:6年10个月
粉丝:56
关注:0
搜索
- java.lang.UnsupportedOperationException异常
- java.lang.UnsupportedOperationException异常
- 异常java.lang.UnsupportedOperationException
- java.lang.UnsupportedOperationException异常
- java.lang.UnsupportedOperationException异常
- java.lang.UnsupportedOperationException异常
- java.lang.UnsupportedOperationException异常
- java.lang.UnsupportedOperationException异常
- java.lang.UnsupportedOperationException异常
- java.lang.UnsupportedOperationException异常
- java 异常java.lang.UnsupportedOperationException
- java 异常java.lang.UnsupportedOperationException
- java 异常java.lang.UnsupportedOperationException
- java 异常java.lang.UnsupportedOperationException
- java 异常java.lang.UnsupportedOperationException
- 关于java.lang.UnsupportedOperationException异常
- java.lang.UnsupportedOperationException异常解决办法
- 关于 java.lang.UnsupportedOperationException 异常
- qemu for windows编译
- 素数判断+DFS POJ2034
- 在Linux下安装JITwatch
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
- 黑马程序员——java的IO之File类
- java 异常java.lang.UnsupportedOperationException
- 15. 3Sum
- Solr之介绍与安装
- "set -e" 与 "set -o pipefail"
- Python输出中文乱码问题
- iOS 获取图片的三种方法 UIImagePickerController
- 浅析Web加密技术
- android Menu 详解2
- Mysql5.5 两台服务器互为主从同步设置
【推荐】融云即时通讯云-专注为 App 开发者提供IM云服务
【推荐】如何让你的程序拥有象Excel一样强大的数据编辑功能
【活动】RDS邀您6.5折体验PostgreSQL
· “阳光动力2号”踏上“不归旅程” 飞行员将借助冥想保持冷静头脑
· 三星新福利:男女都可休假2年回家带孩子
· 外媒评小米:为什么这家公司需要在印度取得成功?
· 专访Line CEO:聊天应用或将整合 但不会一家独大
· 完美通过孵化器面试关?就别犯这些错误
» 更多新闻...
· 深入NGINX:我们如何设计它的性能和扩展性
· 文化编码(Coding Culture):帮你构建更强的团队,创造更好的产品
· 领域驱动设计阅读思考
· 程序员不是砌砖工人,他们是作家