java.lang.UnsupportedOperationException解决方法(转)

编程

在项目中对List进行操作时报错java.lang.UnsupportedOperationException,追查后发现操作的List是由数组转化而成的,通过看源码发现问题,测试代码如下:

 @Test

public void testArrayAsList(){

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

list.add(11);

}

执行结果:

发生问题的原因如下:调用Array.asList()产生的List中的add、remove方法时报异常,这是由于Arrays.asList()返回的是Arrays的内部类ArrayList,而不是java.util.ArrayList。Arrays的内部类ArrayList和java.util.ArrayList都是继承AbstractList,remove、add等方法在AbstractList中是默认抛出throw new UnsupportedOperationException();不做任何操作。java.util.ArrayList重写这些方法而Arrays的内部类ArrayList没有重写,所以会抛出异常。

所以解决的方法就是把Arrays.ArrayList转为java.util.ArrayList

代码如:

 @Test

public void testArrayAsList(){

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

List<Integer> newList = new ArrayList<>(list);

newList.add(11);

}

以上是 java.lang.UnsupportedOperationException解决方法(转) 的全部内容, 来源链接: utcz.com/z/515860.html

回到顶部