ArrayList抛java.lang.UnsupportedOperationException
ArrayList抛java.lang.UnsupportedOperationException
我对 ArrayList 进行元素的添加和删除操作时,抛异常了。
package shali.tdl.jdk.util;
import org.junit.Test;
import java.util.Arrays;
import java.util.List;
public class ArraysTest {
/**
* 对 ArrayList 进行元素的添加和删除操作,报不支持的操作异常
*/
@Test(expected = UnsupportedOperationException.class)
public void unsupportedOperationExceptionOfAdd() {
List<Integer> integerList = Arrays.asList(1, 2, 3, 4, 5, 6);
integerList.add(7);
}
/**
* java.util.Arrays.ArrayList 没有重写 remove 方法
*/
@Test(expected = UnsupportedOperationException.class)
public void unsupportedOperationExceptionOfRemove() {
List<Integer> integerList = Arrays.asList(1, 2, 3, 4, 5, 6);
integerList.remove(0);
}
}
这里需要注意 Arrays.asList 返回的是 java.util.Arrays.ArrayList 不是 java.util.ArrayList。
抛异常的原因是 java.util.Arrays.ArrayList 没有重写 java.util.AbstractList 的 remove 和 add 方法。
不信,我们可以看源码。
public E set(int index, E element) {
throw new UnsupportedOperationException();
}
public void add(int index, E element) {
throw new UnsupportedOperationException();
}
public E remove(int index) {
throw new UnsupportedOperationException();
}
解决方法
使用 new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6))。

浙公网安备 33010602011771号