zoukankan      html  css  js  c++  java
  • Arrays.asList()后调用add,remove这些method时出现java.lang.UnsupportedOperationException异常

    String[] queryNames = request.getParameterValues("queryName");
    List<String> queryNamesAry = Arrays.asList(queryNames);
    for(int idx=0; idx<queryNamesAry.size(); idx++) {
        String queryName = queryNamesAry.get(idx);
        if(StringUtils.isEmpty(queryName) || StringUtils.isEmpty(queryValue)) {
            queryNamesAry.remove(idx);
            queryValuesAry.remove(idx);
            idx--;
        }
    }

    执行出错,错误信息如下:

    Caused by: java.lang.UnsupportedOperationException
        at java.util.AbstractList.remove(AbstractList.java:161)
        at com.qq.action.QqProjSelectAction.fullSearchList(QqProjSelectAction.java:37)
        ... 131 more

    问题原因:

    Arrays.asList()后调用add,remove这些method时出现java.lang.UnsupportedOperationException异常。

    Arrays.asList() 返回java.util.Arrays$ArrayList, 而不是ArrayList。Arrays$ArrayList和ArrayList都是继承AbstractList,remove,add等 method在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。ArrayList override这些method来对list进行操作,但是Arrays$ArrayList没有override remove(int),add(int)等,所以throw UnsupportedOperationException。

    解决办法:

    解决方法是使用Iterator,或者转换为ArrayList。

    List<String> queryNamesAry = new ArrayList(Arrays.asList(queryNames));
  • 相关阅读:
    我要录视频XML(一)
    JavaScript入门基础 (一)
    JQuery 入门24条
    3.The IoC container
    关于jquery.fn
    apche禁止列表显示文件夹中文件,并且显示特定界面
    Struts 2 + Spring 2 + JPA + AJAX
    3.The IoC container(2)
    4.9 Annotationbased container configuration
    3.5 Bean scopes
  • 原文地址:https://www.cnblogs.com/xusweeter/p/7601608.html
Copyright © 2011-2022 走看看