Java.util.HashMap – 为什么HashMap扩展了AbstractMap并实现了Map?

为什么HashMap扩展了AbstractMap并实现了Map? 是扩展AbstractMap还不够,因为AbstractMap实现了Map?

这是多余的。 我怀疑它是出于“文档”原因而完成的。 HashMap实现了Map,你可以依赖它。 它扩展AbstractMap的事实可以说只是一个实现细节。 (虽然HashMap的未来版本不太可能不扩展AbstractMap,因为可能有一些代码希望HashMap可以分配给AbstractMap。)

这是多余的,但不会受到伤害。 如果他们将来不想在AbstractMap中实现Map ,它仍然可以工作。

还有一件事是AbstractMap是一个实现细节。 它可能在Oracle的JDK的未来版本中不存在。它可能在当前版本的IBM JDK中不存在。但无论它是否存在,HashMap应始终符合List契约。所以,它是明确的通过指定’HashMap implements Map’在类声明中捕获