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

JDKの作成者によってオンラインのどこかに投稿された理由を誰かが指摘WeakHashMapできない限り、推測することしかできません。これにより、自動生成されたドキュメントが改善されるのではないかと推測されます。クラスによって公開されるインターフェイスや使用方法には影響しません。

于 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 に答える