工具類Arrays.asList()方法把數組轉換成集合
不能使用其修改集合相關的方法,它的add/remove/clear方法會拋出UnsupportedOperationException()
問題分析:
1、測試
被注釋的三行可以分別解開注釋,運行后確實出現了上述所說的異常
2、看源碼
似乎沒有問題、往下看
然而實際上我們點進到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。