List 进行 remove 操作时抛出 java.lang.UnsupportedOperationException 异常分析
原因:
看了下源码才发现使用 Arrays.asList(arr) 转换的 List 并不能进行 add 和 remove 操作。
Arrays.asList(arr) 返回的类型是 Aarrays
A
r
r
a
y
L
i
s
t
并
不
是
A
r
r
a
y
L
i
s
t
,
A
a
r
r
a
y
s
ArrayList 并不是 ArrayList, Aarrays
ArrayList并不是ArrayList,AarraysArrayList 和 ArrayList 都继承 AbstractList,但是 AbstractList 中的 add 方法和 remove 方法都是直接抛出 UnsupportedOperationException,并没有直接实现。
ArrayList 重写了 add 方法和 remove 方法,能够进行对应的添加和删除操作,Aarrays$ArrayList 却没有去重写,所以此时调用 add 方法和 remove 方法会抛出 UnsupportedOperationException。
解决方法:
List natureList = Arrays.asList(patternSplit);
// new
List natureList = new ArrayList<>(Arrays.asList(patternSplit));
作者:寻梦的尕柳
链接:https://www.jianshu.com/p/7f718d900111
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。