UnsupportedOperationException的原因及解決方案


探討UnsupportedOperationException的原因及解決方案

Arrays.asList()方法返回的是不可變集合

做開發一定要注重細節。

在項目中對List進行操作時報錯java.lang.UnsupportedOperationException,后來發現操作的List是由數組轉換而成的,通過看源碼發現問題,並寫測試程序如下。

執行結果:

**發生問題的原因如下: **

調用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沒有重新,所以會拋出異常。解決方法如下

List<String> str=new ArrayList<>();  
Arrays.stream(array).forEach(arr->str.add(arr));  
return str;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM