为什么HashMap在扩展了 AbstractMap 的情况下实现了 Map?

2022-09-02 13:38:14

可能的 Duplicate:
Java.util.HashMap — 为什么 HashMap 扩展 AbstractMap 并实现 Map?

在java中实现我们需要实现.HashMap<K,V>Map<K,V>

然而,当我在java类中调试更多时,似乎....java 定义如下类。HashMap

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

同时我看到实现它也实现了接口。public abstract class AbstractMap<K,V>Map<K,V>Map<K,V>

如果抽象类实现了接口,那么在类级别实现背后的原因是什么?Map<K,V>HashMap

根据我的理解类,类具有继承的所有方法,可以根据要求覆盖这些方法。HashMapAbstractMapHashMap


答案 1

它可能只是为了让事情变得更加明显。您基本上可以直接从实现接口的单个类的代码中看到。是的,它已经扩展了,但这可能只被认为是一个实现细节。HashMapMapAbstractMap

再次实现接口没有错。这不会改变代码的编译方式,但它绝对有帮助,因为您可以立即看到它。您不必先爬上类层次结构或加载 API 文档。


答案 2

在这种特殊情况下,它纯粹是出于文档目的;即向读者清楚地表明这是一个实现。我很确定这种冗余的成本可以忽略不计。Map

(是的,你的理解是正确的。


推荐