全部产品
云市场

java_lang_UnsupportedOperationException

更新时间:2018-04-19 20:40:10

问题分析:

当请求了不支持的操作时抛出此类异常。这个异常有三个子类:

  1. HeadlessException, 在不支持键盘、显示器或鼠标的环境中调用与键盘、显示器或鼠标有关的代码时,被抛出的异常。

  2. ReadOnlyBufferException, 当在只读缓冲区上调用内容可变(content-mutation)的方法(例如 put 或 compact 方法)时,抛出此未经检查的异常。

  3. ReadOnlyFileSystemException,当试图更新一个关联了只读权限的文件的对象时抛出此类异常。

解决方案:

当请求了不支持的操作时抛出此类异常,请根据堆栈信息检查相关代码,根据官方文档及状态图检查是否进行了不支持的操作。

示例一:

  1. java.lang.UnsupportedOperationException
  2. java.util.AbstractList.add(Unknown Source)
  3. java.util.AbstractList.add(Unknown Source)
  4. javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
  5. javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

问题分析:

根据官方文档,asList()函数返回的List不支持结构调整,即不支持remove和add操作。

解决方案

可以创建一个新的List,将符合要求的List加入新的List对象中。

代码示例:

  1. public void chooseObject(String[] array, String key){
  2. List<String> list=Arrays.asList(array);
  3. /* 错误的代码
  4. list.remove(0); */
  5. List<String> newList=new ArrayList<String>();
  6. for(String tmp:list){
  7. if(tmp.contains(key)){
  8. newList.add(tmp);
  9. }
  10. }
  11. System.out.println(newList.toString());
  12. }

参考文献:

1.https://docs.oracle.com/javase/7/docs/api/java/lang/UnsupportedOperationException.html

2.http://stackoverflow.com/questions/5755477/java-list-add-unsupportedoperationexceptionhttp://docs.oracle.com/javase/6/docs/api/java/util/Arrays.html#asList%28T...%29 (asList函数说明)