【Java】Arrays.asList()、Collections不支持添加、刪除等操作

問題描述:

場景是本意是想將一個字符串分割成數組,然後轉成List,於是使用了Arrays.asList()。但是隨後的邏輯中,我用到了add()方法,執行後就報錯:UnsupportedOperationException

問題原因:

查看Arrays.asList()的實現,可以看到它的new ArrayList<>()採用了內部實現,繼承了AbstractList。再查看AbstractList這個抽象類的add()方法,就發現了這個方法是直接拋出UnsupportedOperationException異常的。此外,還有remove()、set()方法。

解決方法:

可以使用Lists.newArrayList()代替Arrays.asList(),其下的new ArrayList<>()就是用的java util包下的,雖然它也繼承了AbstractList,但是它有實現了add()等方法。

 類似的,還有Collections類下的一些方法,比如Collections.singletonList()、Collections.emptyList(),也會直接拋出UnsupportedOperationException異常。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章