美文网首页
Exception in thread "main&q

Exception in thread "main&q

作者: 海人为记 | 来源:发表于2018-07-14 10:09 被阅读19次
    Exception in thread "main" java.lang.UnsupportedOperationException
         at java.util.AbstractList.remove(AbstractList.java:161)
         at com.day14.Operation.footballTeam(Operation.java:106)
         at com.day14.Operation.main(Operation.java:51)
    

    在调用当对List列表进行add()和remove()操作时出现java.lang.UnsupportedOperationException异常。把数组转成List的操作:

    String[] balls = {"科特迪瓦","阿根廷","澳大利亚","塞尔维亚","荷兰","尼日利亚","日本","美国","中国","新西兰","巴西","比利时","韩国","喀麦隆","洪都拉斯","意大利"};
     List<String> ballsList = Arrays.asList(balls);
    

    异常分析:java.lang.UnsupportedOperationException是指请求的方法不被支持的异常。在从 Arrays.asList()转换过来的List的不支持add()和remove()方法,这是由于从 Arrays.asList() 返回的是返回 java.util.ArraysArrayList,而不是ArrayList。ArraysArrayList和ArrayList都是继承AbstractList,add() 和 remove() 等方法在AbstractList中默认 throw UnsupportedOperationException而不做任何操作。ArrayList重写这些方法对List进行操作,而Arrays$ArrayList却没有重写add()和remove() 等方法,所以对从 Arrays.asList() 转化过来的List进行 add() 和remove() 会出现 UnsupooortedOperationException异常

    解决办法:
    使用Iterator迭代器或者转化成ArrayList。

    String[] balls = {"科特迪瓦","阿根廷","澳大利亚","塞尔维亚","荷兰","尼日利亚","日本","美国","中国","新西兰","巴西","比利时","韩国","喀麦隆","洪都拉斯","意大利"};
    List<String> liB = Arrays.asList(balls);
    List<String> ballsList = new ArrayList<String>(liB);
    

    相关文章

      网友评论

          本文标题:Exception in thread "main&q

          本文链接:https://www.haomeiwen.com/subject/xjiepftx.html