博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java使用Arrays.asList快速创建List集合
阅读量:6675 次
发布时间:2019-06-25

本文共 1568 字,大约阅读时间需要 5 分钟。

   程序中某段案例代码如下:

Map
> tMap = new HashMap
>(); tMap.put(name, Arrays.asList(new CronTrigger[] { trigger }));

  

   程序运行抛出异常:java.lang.UnsupportedOperationException

 

   错误原因:

   为了快速创建List而使用了Arrays.asList方法,但此方法返回的ArrayList不是java.util.ArrayList对象,而是Arrays的一个内部类。

   我们可以看下源码

Arrays.class: @SafeVarargs    public static 
List
asList(T... a) {        return new ArrayList<>(a);    }---------------------------------------------------private static class ArrayList
extends AbstractList
        implements RandomAccess, java.io.Serializable    {        private static final long serialVersionUID = -2764017481108945198L;        private final E[] a;        ArrayList(E[] array) {            if (array==null)                throw new NullPointerException();            a = array;        }.....

   上述代码中可以看出内部类ArrayList继承了AbstractList,但是没有重写其add方法和remove方法,AbstractList中相关代码如下:

public boolean add(E e) {        add(size(), e);        return true;    }public void add(int index, E element) {        throw new UnsupportedOperationException();    }public E remove(int index) {        throw new UnsupportedOperationException();    }

这样就导致我们在把它当做java.util.ArrayList对象使用时调用方法add和remove会抛出 UnsupportedOperationException

解决方法:

    1. 不使用Arrays.asList方法,直接new java.util.ArrayList(),然后依次添加对象(可能代码较多)。

    2. 依然使用Arrays.asList方法,但是要加转换,代码如下:

tMap.put(name, new ArrayList
(Arrays.asList(new CronTrigger[] { trigger })));

 

转载于:https://www.cnblogs.com/bye-hero/p/4614252.html

你可能感兴趣的文章
CentOS 7 yum安装zabbix 设置中文界面
查看>>
Django1.11启动错误:Generator expression must be parent
查看>>
SSH协议服务器、SUDO用法以及PAM机制
查看>>
CSS如何让li 4个一行显示
查看>>
杭州雄迈信息技术有限公司被评为“杭州市专利试点企业”
查看>>
ManageEngine网络管理软件新特点
查看>>
美团即时物流的分布式系统架构设计
查看>>
Win7获KB4493132更新
查看>>
锐龙R3 2200G和Intel i3-8100选哪个好
查看>>
HP ILO2 使用详细教程
查看>>
常用软介质下载
查看>>
Oracle教程之Oracle管理约束(一)--Oracle约束基本概念
查看>>
Oracle RAC OCR 的备份与恢复
查看>>
配置Vsphere vCenter 5.5安装使用远程Oracle数据库
查看>>
xenserver迁移至kvm记录
查看>>
Ubuntu 14.04下MySQL服务器和客户端的安装
查看>>
jquery插件开发
查看>>
32位系统下sizeof()
查看>>
Linux上-DNS(bind)搭建2015091601
查看>>
随便谈谈啥值钱,积累的重要性
查看>>