public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, Serializable
なぜHashSetがAbstractSetを拡張し、Setを実装するのですか?
HashSetがAbstractSetを拡張し、Setを実装するのはなぜですか?AbstractSetは既にSetを実装しているのですか?
public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, Serializable
なぜHashSetがAbstractSetを拡張し、Setを実装するのですか?
HashSetがAbstractSetを拡張し、Setを実装するのはなぜですか?AbstractSetは既にSetを実装しているのですか?
HashSet
は、Set
である。これは、Set
インタフェースで定義されたコントラクトを実装します。したがって、クラス階層を確認することなく、そのインタフェースを実装することを明確にすると便利です。
AbstractSet<E>
が拡張されているという事実は実装の詳細です。将来のJavaバージョンではAbstractSet
の拡張が中止されるかもしれませんが(おそらくそれほどありませんが)、常にSet
が実装されます。
もちろん、set
インターフェイスを実装せずに正常に動作します。しかし、プログラマーがクラスの完全な階層を見ることなく正しく理解できるように、コードをより読みやすくするために行われます。また、リスクを最小限に抑えるために、将来起こる可能性があります(HashSet
にはAbstructSet
が実装されていませんが、それはあまりありません)。