ArrayList报错:UnsupportedOperationException的解决办法

在使用java.util.Arrays.asList生成ArrayLst对象,再使用add方法时,会报错UnsupportedOperationException。
原来,使用Arrays.asList方法得到的ArrayList不是"真正的"ArrayList

//java.util.Arrays中的asList方法
@SafeVarargs
@SuppressWarnings("varargs")
public static  List asList(T... a) {
    return new ArrayList<>(a);
}

而此处的这个ArrayList原来是Arrays内部的一个类,这个类实现了AbstractList抽象类
ArrayList报错:UnsupportedOperationException的解决办法_第1张图片
而在这个类中并没有重写add方法,因此,当调用add方法时,就回去调用AbstractList中的add方法,而在AbstractList中,add方法是这样实现的

public boolean add(E e) {
    add(size(), e);
    return true;
}

public void add(int index, E element) {
     throw new UnsupportedOperationException();
}

这样,就知道为何会抛出UnsupportedOperationException异常了
那么,应该如何处理不报异常呢

List arraysList = Arrays.asList(1, 2, 3, 4);
List arrayList = new ArrayList(arraysList);
arrayList.add(5);
System.out.println(arrayList);

这样,异常问题就没有了。

你可能感兴趣的:(Java)