在项目中采用一个枚举的集合,本人采用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 list = Arrays.asList(a[]);
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&lt;String&gt; 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等方法

转载于:https://www.cnblogs.com/ThinkVenus/p/6943538.html

java 异常java.lang.UnsupportedOperationException相关推荐

  1. Java 异常java.lang.IllegalArgumentException: Illegal group reference

    Java 异常java.lang.IllegalArgumentException: Illegal group reference 参考文章: (1)Java 异常java.lang.Illegal ...

  2. java异常[java.util.regex.patternsyntaxexception dangling meta character ‘+‘ near index]解决

    java异常[java.util.regex.patternsyntaxexception dangling meta character '+' near index]解决 String s=&qu ...

  3. java输入输出流_金九银十准备季:Java异常+Java IO与NIO面试题(含答案)

    写在前面:2020年面试必备的Java后端进阶面试题总结了一份复习指南在Github上,内容详细,图文并茂,有需要学习的朋友可以Star一下! GitHub地址:abel-max/Java-Study ...

  4. 常见的java异常——java.lang.IllegalStateException: Ambiguous handler methods mapped for HTTP path...

    此异常是由于你的controller中有两个名字与内容相同的方法: 出现此异常时去检查你的controller中是否有重复的名字的方法: 转载于:https://www.cnblogs.com/201 ...

  5. Java基础学习第十八讲:Java异常

    Java异常 Java 中的异常(Exception)又称为例外,是一个在程序执行期间发生的事件,它中断正在执行程序的正常指令流.为了能够及时有效地处理程序中的运行错误,Java中引入了异常类的概念. ...

  6. java.lang.UnsupportedOperationException 异常分析

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 今天将一个数组转换成 List 然后进行 remove 操作时却抛出 java.lang.Unsup ...

  7. 解决 List 执行 remove 时报异常 java.lang.UnsupportedOperationException

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一.情况描述 报错如题: java.lang.UnsupportedOperationExcepti ...

  8. ArrayList Iterator remove java.lang.UnsupportedOperationException

    在使用Arrays.asList()后调用add,remove这些method时出现 java.lang.UnsupportedOperationException异常.这是由于Arrays.asLi ...

  9. java.lang.UnsupportedOperationException

    问题:系统项目用的是maven,需要用到jaxen包,在pom中加入jaxen-1.1.1.jar之后,访问系统报下面的异常: 2016-11-10 11:02:54,695 ERROR [http- ...

  10. elasticsearch启动报错:unable to install syscall filter: java.lang.UnsupportedOperationException: seccomp

    文章目录 1 场景 异常 解决 1 场景 win10 - linux子系统下启动 异常 [2021-09-12T10:40:53,855][WARN ][o.e.b.JNANatives ] [DES ...

最新文章

  1. 小试牛刀之Django
  2. python求50的阶乘_python如何求阶乘
  3. 通过一个实例掌握测试工具JMeter的一些基本概念
  4. Java学到什么程度可以找工作?
  5. python白盒测试_白盒测试 - zp_Alex - 博客园
  6. kafka 集群搭建步骤
  7. 逍遥安卓多开器出现android,逍遥安卓模拟器
  8. 抓住每一次学习的机会
  9. EXCEL技能1:SUMIFS 小白详解
  10. JAVA中链表的next解释
  11. hpgs2wnd.exe
  12. “人工智能发展现状”
  13. 甬台温、温福铁路动车组时刻表
  14. 探索“吴家路径”:一条带动村民共同富裕,有效促乡村善安治之路
  15. 2022年秋招 Java后端程序员如何应对面试?
  16. 使用ResponseEntity统一返回数据
  17. i5 12400f性能怎么样 i5 12400f相当于什么水平酷睿i5 12400f有核显吗
  18. 如何把HTML转换成动图,视频转gif 如何将视频制作gif动画图片
  19. python二进制转中文_python3 二进制转中文
  20. 【ZCMU1930】帽子戏法(并查集)

热门文章

  1. js中事件处理程序的内存优化
  2. python源码中的学习笔记_第9章_类与对象
  3. NAACL2021 | 苏大阿里提出:一种统一的基于跨度的意见挖掘方法
  4. 【CV学习笔记】OpenCV基本操作
  5. 【AAAI 2020】微软亚洲研究院6篇精选论文在家必看!
  6. 20项任务全面碾压BERT,CMU全新XLNet预训练模型屠榜(已开源)
  7. 初学者|一文读懂命名实体识别
  8. 机器学习面试-其他重要算法
  9. 易学性vs易用性,产品应该选哪边?
  10. 星巴克——最单纯的SNS应用