Collections 为什么AbstractList类实现set()方法

Collections 为什么AbstractList类实现set()方法,collections,Collections,为什么AbstractList类实现set(int-index,E-element)方法?它所做的只是抛出不支持的操作异常 但是,它的所有子级(ArrayList、LinkedList、Vector)都实现(重写)此方法并为操作提供其逻辑。如果所有扩展AbstractList的类都提供了自己的逻辑,那么为什么这个方法要由AbstractList实现呢。这是为实现List接口的子类完成的 例如,通过asList方法创建的实用工具Arrays.ArrayList类 List<Integer&g

为什么AbstractList类实现set(int-index,E-element)方法?它所做的只是抛出不支持的操作异常


但是,它的所有子级(ArrayList、LinkedList、Vector)都实现(重写)此方法并为操作提供其逻辑。如果所有扩展AbstractList的类都提供了自己的逻辑,那么为什么这个方法要由AbstractList实现呢。

这是为实现
List
接口的子类完成的

例如,通过
asList
方法创建的实用工具
Arrays.ArrayList

List<Integer> readOnly = Arrays.asList(1, 2, 3);
List readOnly=Arrays.asList(1,2,3);

不允许修改列表,因此它是
set(int index,E元素)
方法抛出
UnsupportedOperationException
。这个默认行为是在
AbstractList
类中实现的。

谢谢你的回答,但是,你能告诉我为什么数组也有ArrayList实现(内部类),为什么它不使用util包的ArrayList吗?@VjMore它是一个特殊的类,可以简化从许多参数创建列表的过程。它不使用java.util.ArrayList,因为它在设计上应该是不可变的