最近在使用ArrayList的clear()方法时遇到了一个UnsupportedOperationException异常,当时看到这个异常的时候可以说是一脸懵逼,之前根本没有遇到过这种异常,去网上搜也没有好的解决办法。后来询问了身边的大神之,大神看了我的代码后,说Arrays的asList()方法是异常出现的原因,因为Arrays的asList()方法返回的ArrayList是一个定长的列表。然后我去看了下api,如图。
该方法返回一个受指定数组支持的固定大小的列表。所以当我们对返回的列表进行改变长度的操作时,就会出现UnsupportedOperationException。
备注:Aarrays.asList产生的list对象是其内部类ArrayList, 而不是java.utils.ArrayList对象. 两个ArrayList都继承了AbstractList抽象类, 但是前者没有重写抽象类的add()和remove()方法, 如果调用, 则会抛出java.lang.UnsupportedOperationException;