java - 为什么 LinkedHashMap 类要实现 Map 接口(interface)?

标签 java collections

<分区>

类 HashMap 实现 Map 接口(interface):

public class HashMap<K,V> extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable

类 LinkedHashMap 扩展了 HashMap ,这意味着它应该默认实现 Map 接口(interface)。为什么要显式实现 Map 接口(interface)?

public class LinkedHashMap<K,V>
extends HashMap<K,V>
implements Map<K,V>

最佳答案

你是对的:丢弃 Map<K,V>来自链接 HashMap 的声明不会改变任何东西。虽然LinkedHashMap<K,V>会实现Map<K,V>仅仅因为它扩展了 HashMap<K,V> ,链接 HashMap 派生自常规 HashMap 的事实是一个实现细节,而不是硬性要求。

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

这就是为什么 LinkedHashMap<K,V> 的设计师提到Map<K,V>明确地:如果在以后某个时候基类会因为重新设计而改变,接口(interface)将保持不变。

关于java - 为什么 LinkedHashMap 类要实现 Map 接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29986308/

相关文章:

java - Eclipse - 构建功能项目

Java 贷款摊销

java - 使用 Java 客户端如何查询 ElasticSearch?

java - 删除重复项并对字符串数组进行排序

java - 从另一个对象列表创建对象元素的列表

java - 将日期排序为字符串 Java

java - 单击按钮后如何将Paypal集成到付款用户?

java - Eclipse SVN 同步工作区错误 - 更新 SVN 工作区的同步 View - java/nio/file/Paths

java - 从 arrayList 到 long[]

java - 从 Guava ImmutableTable 派生的 View 的迭代顺序