Arrays.asList报错:java.lang.UnsupportedOperationException

简介: Arrays.asList报错:java.lang.UnsupportedOperationException

问题描述

以下代码中,给List对象添加元素的时候,会报错

package com.example;
import java.util.Arrays;
import java.util.List;
public class Demo {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("Tom", "Jack", "Steve");
        System.out.println(list);
        // [Tom, Jack, Steve]
        list.add("Jone");
        System.out.println(list);
    }
}

报错信息

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.example.Demo.main(Demo.java:16)

原因分析

查看源码,发现Arrays.asList确实返回了ArrayList,代码应该没有问题

public static <T> List<T> asList(T... a) {
        return new ArrayList<>(a);
}

继续查看源码,发现

// Arrays.asList 返回的是内部类
java.util.Arrays.ArrayList
// 我们需要的是
java.util.ArrayList

解决方法

类型转换即可

package com.example;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Demo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>(Arrays.asList("Tom", "Jack", "Steve"));
        System.out.println(list);
        // [Tom, Jack, Steve]
        list.add("Jone");
        System.out.println(list);
        // [Tom, Jack, Steve, Jone]
    }
}

参考

java.lang.UnsupportedOperationException的解决方法


相关文章
|
3月前
|
分布式计算 Java Hadoop
java使用hbase、hadoop报错举例
java使用hbase、hadoop报错举例
122 4
|
1月前
|
JSON Java 关系型数据库
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
在Java中,使用mybatis-plus更新实体类对象到mysql,其中一个字段对应数据库中json数据类型,更新时报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
73 4
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
|
1月前
|
分布式计算 Java MaxCompute
ODPS MR节点跑graph连通分量计算代码报错java heap space如何解决
任务启动命令:jar -resources odps-graph-connect-family-2.0-SNAPSHOT.jar -classpath ./odps-graph-connect-family-2.0-SNAPSHOT.jar ConnectFamily 若是设置参数该如何设置
|
1月前
|
安全 小程序 Java
Java“AccessControlException”报错解决
Java中的“AccessControlException”通常发生在尝试访问受安全策略限制的资源时。解决方法包括:1. 检查安全策略文件(java.policy)配置;2. 确保代码具有足够的权限;3. 调整JVM启动参数以放宽安全限制。
158 1
|
3月前
|
消息中间件 分布式计算 Java
Linux环境下 java程序提交spark任务到Yarn报错
Linux环境下 java程序提交spark任务到Yarn报错
51 5
|
3月前
|
域名解析 分布式计算 网络协议
java遍历hdfs路径信息,报错EOFException
java遍历hdfs路径信息,报错EOFException
42 3
|
3月前
|
缓存 Java Linux
java操作hbase报错:KeeperErrorCode=NoNode for /hbase-unsecure/master
java操作hbase报错:KeeperErrorCode=NoNode for /hbase-unsecure/master
229 2
|
3月前
|
Java
java服务调用报错503
java服务调用报错503
39 2
|
3月前
|
JSON Java 数据格式
java调用服务报错400
java调用服务报错400
78 2
|
3月前
|
JSON Java 数据格式
java调用服务报错415 Content type ‘application/octet-stream‘ not supported
java调用服务报错415 Content type ‘application/octet-stream‘ not supported
111 1