为什么LinkedHashMap类实现Map接口?

Sho*_*eek 6 java collections

HashMap类实现了Map接口:

public class HashMap<K,V> extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable
Run Code Online (Sandbox Code Playgroud)

LinkedHashMap类扩展了HashMap,这意味着它应该默认实现Map接口.为什么明确实现Map接口?

public class LinkedHashMap<K,V>
extends HashMap<K,V>
implements Map<K,V>
Run Code Online (Sandbox Code Playgroud)

das*_*ght 5

你是对的:Map<K,V>从链接哈希映射的声明中删除不会改变任何东西.虽然只是因为它扩展LinkedHashMap<K,V>而实现,但是链接散列映射从常规散列映射派生的事实是实现细节,而不是硬性要求.Map<K,V>HashMap<K,V>

Map<K,V>另一方面,实现接口是一项基本要求.如果设计者决定LinkedHashMap<K,V>从头开始实现,或者依赖于其他一些基类,例如链表,那么这个要求就不会消失.

这就是明确LinkedHashMap<K,V>提到的设计者的原因Map<K,V>:如果在某个晚些时候基类会因重新设计而改变,那么界面将保持不变.