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

  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM