Java报错--UnsupportedOperationException的解决方法

这两天遇到了一个十分头苦的问题。就是这个UnsupportedOperationException报错。

苦就苦在这个报错根本不是在真正错误的地方报错。

经过一顿百度,终于找到了一种解决办法。

我的错误原因:

直接使用Arrays.asList()方法将数组转成了list集合。导致后面的remove操作直接报了这个错误。我还一直在找remove的错误。

原来是底层转换出了问题。

我们调用Arrays的asList()方法将数组转换成List时返回的是Arrays的静态内部类ArrayList,它自身并未重写add()方法,而其父类AbstractList实现的add()方法只会抛出UnsupportedOperationException,导致我们调用Arrays的静态内部类ArrayList的add()方法时,实际调用的是只会抛出UnsupportedOperationException的AbstractList的add()方法,这就是异常出现的原因了。

解决办法:

自己重写一个数组转换list的方法:

public static <E>  List<E> transferArrayToList(E[] array){
        List<E> transferedList = new ArrayList<>();
        Arrays.stream(array).forEach(arr -> transferedList.add(arr));
        return transferedList;
}

这样转换成的list再执行其他操作的时候就不会报这个错误啦。

参考文章:https://blog.csdn.net/liu_005/article/details/74091805

喜欢的朋友点个赞哦~~

猜你喜欢

转载自blog.csdn.net/stalin_/article/details/81163313