博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 异常java.lang.UnsupportedOperationException
阅读量:4170 次
发布时间:2019-05-26

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

异常信息如下:

Exception in thread "main" java.lang.UnsupportedOperationException			 at java.util.AbstractList.add(AbstractList.java:151)			 at java.util.AbstractList.add(AbstractList.java:89)			 at main(TesException.java:20)

1.该异常出现在调用Arrays.asList方法后的List集合调用add,remove,removeAll方法时。 如:

List a = Arrays.asList(String []);   a.remove("test");

2.原因

查看源码可知,Arrays.asList()方法返回类型为Arrays$ArrayList。该类型为Arrays内自己实现的ArrayList类,与常用的java.util.ArrayList实现有所不同,具体如下:

Arrays$ArrayList:

在这里插入图片描述
实现的方法:
在这里插入图片描述

java.util.ArrayList:

在这里插入图片描述
实现的方法:
在这里插入图片描述

可见Arrays.asList并没有实现cloneable接口,因此调用clone()方法则会报错。

其继承父类AbstractList但又没有实现自己的add,remove等方法。而在AbstractList中,调用add,remove等方法会抛出异常
在这里插入图片描述

之所以没有异常提示,是因为AbstractList实现List接口

在这里插入图片描述
在使用时采取向上转型的方式如 List fu = Arrays.asList(String[]);
父类包含了子类没有重写的方法,使用fu.add(E e);时优先选择了Arrays$ArrayList继承自AbstractList中的add,因此报
UnSupportException。

3.解决办法:

解决办法很简单,将该List转为java.util包下的实现List接口的其他List,如:

List list = Arrays.asList(a[]);
List arrayList = new ArrayList(list);

转载地址:http://vfkai.baihongyu.com/

你可能感兴趣的文章
GanttProject 使用的控件第三方包:jdnc-modifBen.jar
查看>>
ps、grep和kill联合使用杀掉进程
查看>>
openfire中的mina框架使用
查看>>
去掉Windows Messager的自动登录
查看>>
dspace可以检索中文了
查看>>
利用Eclipse编辑中文资源,配置文件
查看>>
将中文转为unicode 及转回中文函数
查看>>
《程序员》专访金蝶:是谁不相信国产软件?
查看>>
debian的gnome下的xmms乱码解决方案
查看>>
python切片操作
查看>>
python 中的split()函数和os.path.split()函数
查看>>
python 矩阵转置
查看>>
python 使用zip合并相邻的列表项
查看>>
python iter( )函数
查看>>
Python 迭代器(iterator)
查看>>
Python enumerate类
查看>>
leetcode 99 Recover Binary Search Tree (python)
查看>>
linux echo 向文件中追加信息
查看>>
区块链问与答
查看>>
css常用小知识点
查看>>