Java的UnsupportedOperationException

问题来源

当使用Arrays.asList(T...a)创建新的集合时,如果往集合中添加元素就会报错。代码如下

    Vertex[] startPair = graph.findMinTwoNOde();
    startPair[1].setParent(startPair[0]);
    List<Vertex> res = Arrays.asList(startPair);

报错信息
图片说明

分析原因

首先跳转到Arrays类的静态方法asList(T...a),代码如下:
图片说明
我们看到他返回了一个ArrayList对象,开始以为是java.util包中的ArrayList,但是java.util包中的ArrayList并没有传入数组的构造方法。于是跟进去。发现这是Arrays类中的一个内部类,这个类继承了AbstractList。
图片说明
但是,这个类没有重写add和remove方法!!
图片说明
因此直接调用父类的add方法和remove方法,产生不支持的操作异常UnsupportedOperationException
图片说明

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 13:47
机械打工仔:你自己匿名可以,这么好的公司就别给它匿名了
点赞 评论 收藏
分享
06-26 15:33
青岛工学院 Java
积极的秋田犬要冲国企:他现在邀请我明天面试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务