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