集合源码中的成员内部类:
ArrayList中有一个内部类:ListItr
ListItr这个内部类继承Itr,实现了ListIterator接口。
LinkedList中有一个内部类:ListItr
ListItr这个类名和ArrayList中的一个内部类名相同。这个类同样实现了ListIterator接口。
因为不同的使用场景ListIterator接口里面的方法的具体实现不太一样。所以它会有不同的实现类。
但是为什么源码不用普通的类去实现,而是用内部类去实现呢?
①因为ListItr内部使用了外部类的成员。而ListItr这个类的方法的具体实现需用用ArrayList的一些成员。所以这个时候我们如果把这个类写成内部类,更方便我们调用ArrayList里的成员。(内部类可以直接调用外部类的成员。)
②因为ListItr这个内部类的功能和我们的外部类ArrayList是紧密相连的。所以我们把这个ListItr写成外部类的话。其实没有什么作用。因为不会有其他类还能和我们的ListItr结合起来使用。
|