异常现象

1
2
3
java.lang.UnsupportedOperationException: null
    at java.util.AbstractList.add(AbstractList.java:148) ~[?:1.8.0_45]
    at java.util.AbstractList.add(AbstractList.java:108) ~[?:1.8.0_45]

解决

因为本处使用了以下代码:

1
2
List<Integer> temp = Arrays.asList(arr);
temp.add(1);

使用 Arrays.asList()转换的List不支持add() 和 remove()方法,这是由于从Arrays.asList()返回的是返回java.util.Arrays$ArrayList,而不是ArrayList。Arrays$ArrayList和ArrayList都是继承AbstractList,add() 和remove()等方法在AbstractList中默认throw UnsupportedOperationException而不做任何操作。ArrayList重写这些方法对List进行操作,而Arrays$ArrayList却没有重写add()和 remove()等方法,所以对从Arrays.asList()转化过来的List进行add()和remove()会出现UnsupportedOperationException异常。

解决办法 :

1
2
List<Integer> temp = new ArrayList<Integer>(Arrays.asList(arr));
temp.add(1);