VectorがAbstractListを継承した以上なぜListインタフェースを実現するのか
1444 ワード
同様の質問:
ArrayListはAbstractListを継承しているが、なぜListインタフェースを実現するのか.
HashMapはAbstractMapを継承しているが、なぜMapインタフェースを実現しなければならないのか.
HashSetはAbstractSetを継承しているが、なぜSetインタフェースを実現しなければならないのか.
今日、何気なくVectorのソースコードを見ると、VectorはAbstractList(抽象クラス、implement Listインタフェース)を継承し、VectorはListインタフェースを実現していることがわかります.コードは次のとおりです.
長い間考えていたのに、どうしてこんなことをしたのか分からなかった.何人か同僚に聞いても、良い説明はありません.
そこで、インターネットで検索して、classsのためだと言いました.getinterfaces()は異なる結果を返します.読めるようにするためと言うか、後でメンテナンスできるようにするためと言うか.のしかし、これらの解釈を考えると、そんなに幸せではありません.
ついに、StackOverflowで答えを見つけました:it was a mistake.JDKの作者が犯した過ちだけで、彼はそれが役に立つと思っていた.
詳細:http://stackoverflow.com/questions/2165204/why-does-linkedhashsete-extend-hashsete-and-implement-sete
最初の返事は、googleの従業員Kevin Bourrillion氏で、java collectionの著者Josh氏に聞いたと自称し、上記の答えを得た.
ほほほ、この問題の最終的な答えは確かに面白いです.
拡張の問題:
HashtableはなぜDictionaryを継承し、Mapインタフェースを実現したのですか?しかしDictionaryはMapインタフェースを実現していませんか?
答えはjava 1にあるからです.2以前は、Mapインタフェースがなく、Hashtableのみだったが、1.2でjava collectionを導入した後、Hashtableを書き換え、Mapインタフェースを実現させた.
これは、JDKのソースコードに不一致なコードスタイルが存在する理由であり、一言で言えば、歴史的な原因である.O(∩_∩)O~
ArrayListはAbstractListを継承しているが、なぜListインタフェースを実現するのか.
HashMapはAbstractMapを継承しているが、なぜMapインタフェースを実現しなければならないのか.
HashSetはAbstractSetを継承しているが、なぜSetインタフェースを実現しなければならないのか.
今日、何気なくVectorのソースコードを見ると、VectorはAbstractList(抽象クラス、implement Listインタフェース)を継承し、VectorはListインタフェースを実現していることがわかります.コードは次のとおりです.
public class Vector
extends AbstractList
implements List, RandomAccess,
Cloneable, java.io.Serializable
長い間考えていたのに、どうしてこんなことをしたのか分からなかった.何人か同僚に聞いても、良い説明はありません.
そこで、インターネットで検索して、classsのためだと言いました.getinterfaces()は異なる結果を返します.読めるようにするためと言うか、後でメンテナンスできるようにするためと言うか.のしかし、これらの解釈を考えると、そんなに幸せではありません.
ついに、StackOverflowで答えを見つけました:it was a mistake.JDKの作者が犯した過ちだけで、彼はそれが役に立つと思っていた.
詳細:http://stackoverflow.com/questions/2165204/why-does-linkedhashsete-extend-hashsete-and-implement-sete
最初の返事は、googleの従業員Kevin Bourrillion氏で、java collectionの著者Josh氏に聞いたと自称し、上記の答えを得た.
ほほほ、この問題の最終的な答えは確かに面白いです.
拡張の問題:
HashtableはなぜDictionaryを継承し、Mapインタフェースを実現したのですか?しかしDictionaryはMapインタフェースを実現していませんか?
答えはjava 1にあるからです.2以前は、Mapインタフェースがなく、Hashtableのみだったが、1.2でjava collectionを導入した後、Hashtableを書き換え、Mapインタフェースを実現させた.
これは、JDKのソースコードに不一致なコードスタイルが存在する理由であり、一言で言えば、歴史的な原因である.O(∩_∩)O~