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);
  }

  

 

posted @ 2020-05-17 11:37  思旭华诞  阅读(2582)  评论(0编辑  收藏  举报