Java中ArrayList的继承体系疑惑


Java util包中, ArrayList 的继承体系是实现 List 接口并且继承 AbstractList (其它接口忽略), 但是其实在 AbstractList 中已经实现了 List 接口。 所以感觉这里在 ArrayList 中再次实现 List`接口是不是多此一举了?或者还是有其它的设计目的?

oop java

御坂美琴 10 years ago

假设……仅仅是假设……下面所说这种情况极难发生,但并不排除其可能性

因为框架需要,AbstractList 不再实现 List 接口,而是实现 NewList 接口,这个时候 ArrayList 仍然要实现 List 接口,而且需要从 AbstractList 继承以实现复用……现在发挥你的相像力……

这在相对成熟的 JDK 中几乎不会发生,但难免你自己写的代码里可能会发生这种事情。而 JDK 自己的代码,就是一个设计模式和开发的典范,所以……

福利部部长 answered 10 years ago

http://stackoverflow.com/questions/4387419/why-does-arraylist-have-imp...
其实Java中还有很多类似的设计:
HashSet,TreeSet 同时继承了AbstractSet和Set
HashMap<K,V>,TreeMap 同时继承了 AbstractMap<K,V>和 Map<K,V>

sundydy answered 10 years ago

Your Answer