Arrays.asList引起的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");
    }
}

原文地址:https://www.cnblogs.com/shamo89/p/9095844.html

时间: 2024-12-23 19:33:24

Arrays.asList引起的java.lang.UnsupportedOperationException解决方法的相关文章

MapReduce 程序运行报错 java.lang.ClassNotFoundException解决方法

在创建自定义的Mapper时候,编译正确,但上传到集群执行时出现错误: 11/16/05 22:53:16 INFO mapred.JobClient: Task Id : attempt_201111301626_0015_m_000000_0, Status : FAILED java.lang.RuntimeException: java.lang.ClassNotFoundException: actiondemo.MyJob$MapClass at org.apache.Hadoop.

java.lang.NoSuchMethodException解决方法

java.lang.NoSuchMethodException: [Lcn.edu.bnu.land.model.Zbcrxx;.<init>()

使用Json出现java.lang.NoClassDefFoundError解决方法

前几天在项目使用到Json格式数据,于是把使用Json需要用到的包都引到了工程里面,程序写好后运行时,发现后台报 java.lang.NoClassDefFoundError: net/sf/json/JSONArray 的错误,开始以为相应的jar包引入有问题,检查后发现所有的包都已经引入了,怎么还会出现这个问题呢? 原来我使用的是eclipse+tomcat 环境,因该项目已经部署过,使用jason所用的包是后面加的,我在eclipse里面配置了,但是eclipse不会自动把这些包重新部署到

org.testng.TestNGException: java.lang.NullPointerException解决方法

对于刚使用testng的同学,可能会碰到很多奇怪的问题,我本人在项目下建了一个testSuite.xml文档,执行这个suite的时候就报空指针异常,如下图: 怎么解决呢?很简单,看下图操作就明白了,选择项目使用testng选项里的convert  to testNG创建suite.xml,执行这样创建出来的suite就不会报错了.

导入maven项目时报java.lang.ClassNotFoundException解决方法!

解决步骤: 右键点击项目,选择Project Facets,将导入的Maven项目转换成Dynamic Web Module,将下图中的红框处进行勾选: 2.继续右键项目->properties->Deployment Assembly, 点击Add后如图所示: 然后就ojbk了! 原文地址:https://www.cnblogs.com/lixionghao/p/8989427.html

coding++:Arrays.asList() - java.lang.UnsupportedOperationException异常处理

这个异常遇到了才知道坑这么大,坑爹的方法. private String[] otherUserFromArray = new String[]{“3”, “4”, “发放”}; List<String> userFromList = Arrays.asList(otherUserFromArray); 在使用 Arrays.asList()转化数组成为list的时候,生成了ArrayList, 表面上看是 java.util.ArrayList, 实际上是Arrays的内部类 ArrayLi

解决错误java.lang.UnsupportedOperationException

遇到错误 Error:Execution failed for task ':app:transformClassesWithDexForDebug'. > com.Android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: Java.util.concurrent.ExecutionException: java.lang.UnsupportedOperatio

java 异常java.lang.UnsupportedOperationException

在项目中采用一个枚举的集合,本人采用Collections中的空集合Collections.emptyList()在添加时发生异常: 常见集合如下: private List<VacationCategory> vacationcategorys = Collections.emptyList(); 报错误如下: -- Encapsulated exception ------------\java.lang.UnsupportedOperationException at java.util

Hbase delete遇到的常见异常: Exception in thread &quot;main&quot; java.lang.UnsupportedOperationException

hbase 执行批量删除时出现错误: Exception in thread "main" java.lang.UnsupportedOperationException at java.util.AbstractList.remove(AbstractList.java:161) at org.apache.hadoop.hbase.client.HTable.delete(HTable.java:852) 这种异常其实很常见,remove操作不支持,为什么会出现不支持的情况呢?检查