ArrayList抛java.lang.UnsupportedOperationException

发布时间 2023-06-20 23:14:31作者: 沙里

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.AbstractListremoveadd 方法。

不信,我们可以看源码。

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();
}