您好,登錄后才能下訂單哦!
引語
阿里巴巴java開發規范說到使用工具類Arrays.asList()方法把數組轉換成集合時,不能使用其修改集合相關的方法,它的add/remove/clear方法會拋出UnsupportedOperationException(),我們來看一下為什么會出現這種情況.
問題分析
我們做個測試
被注釋的三行可以分別解開注釋,運行后確實出現了規約中所說的異常.我們來看下Arrays.asList()做了什么操作.
看上去是個很正常的方法,然而實際上你點進到ArrayList發現,其實ArrayList并不是我們平時用的ArrayList.
而是Arrays里面的一個內部類.而且這個內部類沒有add,clear,remove方法,所以拋出的異常其實來自于AbstractList.
點進去就會發現拋出異常的地方,clear底層也會調用到remove所以也會拋出異常.
總結
1.Arrays.asList()不要亂用,底層其實還是數組;
2.如果使用了Arrays.asList()的話,最好不要使用其集合的操作方法;
3.List list = new ArrayList<>(Arrays.asList("a", "b", "c"))可以在外面這樣包一層真正的ArrayList(數組轉集合有很多方式,可以參考https://stackoverflow.com/questions/157944/create-arraylist-from-array).
歡迎工作一到五年的Java工程師朋友們加入我的個人粉絲群(Java架構技術棧:728987924)群內提供免費的Java架構學習資料(里面有高可用、高并發、高性能及分布式、Jvm性能調優、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)
合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。