1

可能重复:
Java.util.HashMap — 为什么 HashMap 扩展 AbstractMap 并实现 Map?
为什么父类和子类都实现相同的接口?

WeakHashMap<K,V>被声明为扩展AbstractMap<K,V>并实现Map<K,V>

但是AbstractMap<K,V>已经实现了Map<K,V>。看起来implements声明是多余的。

它被宣布的原因是什么?

4

3 回答 3

3

除非有人能够指出WeakHashMapJDK 的作者在网上某处发布的原因,否则我们只能推测。推测是它改进了自动生成的文档。它对类公开的接口或您如何使用它没有影响。

于 2012-12-27T22:52:39.250 回答
2

虽然它确实是多余的,但它确保了如果接口实现从父级中移除,子级仍然会被Map接口持有并产生必要的编译错误。

于 2012-12-27T22:51:16.087 回答
1

这个“看起来”像是一个俯瞰。如果您扩展一个类,您将自动实现基类实现的所有接口(无论该基类是否abstract存在)。所以,给定:

public interface I {}

public class A implements I {}

你声明:

public class B extends A {}

上面的声明严格等同于

public class B extends A implements I {}

确实是一个俯瞰。很好的发现;)

于 2012-12-27T23:00:54.540 回答