2010-12-08 11 views
34

なぜ、ArrayListに "implements List"があるのですか?

AbstractList implements List 

そしてArrayListAbstractList

implements List 

私の質問拡張:コレクションフレームワークで

は、我々は、インタフェースListとクラスAbstractListを持っている理由implements List句を持ってArrayListんか?

ArrayList extends AbstractListAbstractList implements Listは、我々が言うことができない場合は、そのArrayList implement List

答えて

39

はい。それは省略されている可能性があります。しかし、それはすぐにそれがListであることがわかります。さもなければ、コード/文書を余分にクリックする必要があります。私はそれが理由だと思います - 明確です。

さらに、Joeri Hendrickxがコメントしたものを追加してください。ArrayListListを実装することを示しています。 AbstractListは、便宜上のもので、Listの実装間のコードの重複を減らすためです。

+21

それだけでなく、私は意図的であることを明らかにしているので、このスタイルを好む。 arraylistの目標はリストを実装することです。抽象リストを拡張することは、その目標を達成する単なる方法です。 –

+0

@Joeri Hendrickxが同意した。コメントの+1 – Bozho

+0

基本クラスがインターフェースを実装している場合、現在のJavaDocツール(OracleとGnuバージョンの両方)は、派生クラスに 'TheInterfaceを実装する 'ことなく、派生クラスが自動的にインターフェースを実装することをリストします。したがって、余分なクリックは必要ありません。 (これは、基本クラスがpublicでなくても当てはまります)。 –

6

これは、継承構造のトレーサビリティを向上させる可能性が高いと考えられます。そうすれば、Javadocなどをブラウズするときに、継承ツリー全体を下げる必要はありません。

5

私の2セントは、ArrayList リストであることを維持することです。 AbstractListはListが必要とする特定の実装を完了します。

関連する問題