JDK源码总结之AbstractList

一、宏观角度
AbstractList在java.util包下面
JDK源码总结之AbstractList_第1张图片
AbstractList起到承上启下的作用,它继承AbstractCollection抽象类,实现List接口,它是ArrayList的父类,关系图谱如下。

JDK源码总结之AbstractList_第2张图片
二、微观角度
AbstractCollection的iterator()和size()是抽象的,所以非抽象的子类必须重写,但AbstractList是抽象的,所以它只重写了iterator(),size()则没有,另外定义了抽象的get()方法,所以AbstractList的子类必须重写size()和get()。

JDK源码总结之AbstractList_第3张图片
JDK源码总结之AbstractList_第4张图片

另外,如果子类想要能够修改元素,还需要重写 add(), set(), remove() 方法,否则会报 UnsupportedOperationException 错。

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

AbstractList 内部提供了 Iterator, ListIterator 迭代器的实现类,分别为 Itr, ListItr。Itr 只是简单实现了 Iterator 的 next, remove 方法。ListItr 在 Itr 基础上多了 previousIndex ()和 set ()。

JDK源码总结之AbstractList_第5张图片

你可能感兴趣的:(JDK源码)