专栏首页凯哥Javajava.lang.UnsupportedOperationException解决方法

java.lang.UnsupportedOperationException解决方法

在项目中对List进行操作时报错java.lang.UnsupportedOperationException,后来发现操作的List是由数组转换而成的,通过看源码发现问题,并写测试程序如下。 代码块:

public class ListTest {
    public static void main(String[] args) {
        String[] array = {"1","2","3","4","5"};
        Listlist = Arrays.asList(array);
        list.add("6");
    }
}

执行结果:

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractList.add(AbstractList.java:148)
    at java.util.AbstractList.add(AbstractList.java:108)
    at com.atguigu.test.ListTest.main(ListTest.java:11)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

发生问题的原因如下: 调用Arrays.asList()生产的List的add、remove方法时报异常,这是由Arrays.asList() 返回的市Arrays的内部类ArrayList, 而不是java.util.ArrayList。Arrays的内部类ArrayList和java.util.ArrayList都是继承AbstractList,remove、add等方法AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。java.util.ArrayList重新了这些方法而Arrays的内部类ArrayList没有重新,所以会抛出异常。解决方法如下:

public class ListTest {
    public static void main(String[] args) {
        String[] array = {"1","2","3","4","5"};
        Listlist = Arrays.asList(array);
        List arrList = new ArrayList(list);
        arrList.add("6");
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【史上最全】国内外常用精品API接口汇总

    API是获取网络服务最便捷的方式,合理地使用API开发项目可以大大提高开发效率,把精力都集中在程序的业务逻辑之上,避免重复造轮子。推荐给大家个人觉得很赞的第三方...

    凯哥Java
  • java.sql.SQLException: The server time zone value:xx异常

    但是,我们知道,北京所以东8区。所以修改为北京时间应该是:&serverTimezone=GMT%2B8

    凯哥Java
  • Maven项目报错:The type javax.validation.Payload cannot be resolved. It is indirectly referenced from req

    Maven项目报错:The type javax.validation.Payload cannot be resolved. It is indirectly...

    凯哥Java
  • OutOfMemoryError异常----Java堆溢出

    在Java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError(下面都叫OOM)异常的肯能,下面就通过...

    令仔很忙
  • ibatis执行存储过程,java.lang.ArrayIndexOutOfBoundsException: 0

    <procedure id="insertStatisticsResult_settle" parameterClass="String">

    一笠风雨任生平
  • 【未解决问题】

    黑泽君
  • java web中的Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" java.lang.Out

    E | hongtenzone@foxmail.com  B | http://www.cnblogs.com/hongten

    Hongten
  • redis 学习(15)-- GEO

    由于我的 redis 版本是 3.0.7,geo 功能是在 redis-3.2 后引入的,所以这里我直接贴出演示命令,就不在重装 redis 了。

    希希里之海
  • Unsupported major.minor version 51.0

    这是版本不支持造成的,更改方法:JDK向下兼容,当你的Linux中安装的是1.6时,你的工程代码也要相应的调整为1.6. 重新上传问题解决。

    用户5166556
  • 3种常见的Class级别的错误

    ClassNotFoundException 很明显,这个错误是 找不到类异常,即在当前classpath路径下找不到这个类。 ClassNotFoundExc...

    Java技术栈

扫码关注云+社区

领取腾讯云代金券