【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异常。

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