本文主要是介绍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
喜欢的朋友点个赞哦~~
这篇关于Java报错--UnsupportedOperationException的解决方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!