在对List做remove操作时抛出java.lang.UnsupportedOperationException

原因:
那个List是通过Arrays.asList()这个方法构造的,一直以为返回的就是一个ArrayList,今天查看了源码发现错了,是Arrays里面一个名叫ArrayList的私有类。

public class Arrays {
...
public static  List asList(T... a) {
	return new ArrayList(a);
}

private static class ArrayList extends AbstractList
	implements RandomAccess, java.io.Serializable
{
...
}
...
}

它也继承自AbstractList,只是没有实现remove方法,而AbstractList类中remove方法默认是抛java.lang.UnsupportedOperationException异常的。

public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> {
...
public E remove(int index) {
	throw new UnsupportedOperationException();
}
...
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据