java.lang.UnsupportedOperationException解决方法
项目中错误代码:
String deptId = user.getDeptId();
String[] newTaskUdtkObjIds = taskVO.getTaskUdtkObjIds();
List<String> list = Arrays.asList(newTaskUdtkObjIds);
if (!CollectionUtils.isEmpty(list) && list.contains(deptId)){
list.remove(deptId);
}
项目控制台打印错误日志:
问题原因如下:
调用Arrays.asList()的List的add、remove方法时报异常,这是由Arrays.asList() 返回的是Arrays的内部类ArrayList, 而不是java.util.ArrayList。Arrays的内部类ArrayList和java.util.ArrayList都是继承AbstractList,remove、add等方法AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。java.util.ArrayList重写了这些方法而Arrays的内部类ArrayList没有重新,所以会抛出异常。
解决方法如下:
String[] newTaskUdtkObjIds = taskVO.getTaskUdtkObjIds();
List<String> arrList = Arrays.asList(newTaskUdtkObjIds);
List newArrList = new ArrayList(arrList);
if (!CollectionUtils.isEmpty(newArrList) && newArrList.contains(deptId)){
newArrList.remove(deptId);
}