java.lang.UnsupportedOperationException 解决方法

转自 https://blog.csdn.net/Tracycater/article/details/77592472?locationNum=2&fps=1

java.lang.UnsupportedOperationException 解决方法

做开发一定要注重细节。在项目中对 List 进行操作时报错 java.lang.UnsupportedOperationException,后来发现操作的 List 是由数组转换而成的,通过看源码发现问题,并写测试程序如下。 

代码块:

public class ListTest {    public static void main(String[] args) {        String[] array = {"1","2","3","4","5"};
        List<String> list = 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"};
        List<String> list = Arrays.asList(array);
        List arrList = new ArrayList(list);
        arrList.add("6");
    }
}


手机扫描二维码访问

本文标题:《java.lang.UnsupportedOperationException 解决方法》作者:极四维博客
原文链接:https://cway.top/post/756.html
特别注明外均为原创,转载请注明。

分享到微信

扫描二维码

可在微信查看或分享至朋友圈。

相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年10月    »
123456
78910111213
14151617181920
21222324252627
28293031

搜索

控制面板

您好,欢迎到访网站!
  查看权限

最新留言

文章归档

  • 订阅本站的 RSS 2.0 新闻聚合