HashMap <X、X> = new HashMap <X、X>()の代わりにMap <X、X> =新しいHashMap <X、X>

Possible Duplicate:
Isn't it easier to work with foo when it is represented by the class ArrayList rather than the interface List?
Why are most of the examples using ArrayList

Why do we mostly do, like this :

Map map = new HashMap();

instead of :

HashMap map = new HashMap();

& similar while instantiating ArrayList(s).

2

1 答え

より少ない型付け、Mapはそのクラスのインタフェース(Listと同じ)です。そのため、HashMapよりMapを渡すほうが簡単です。何らかの理由でHashMapが必要なものではなく、代わりにTreeMapを使用したいと思ったときに、通常は(通常の場合)これが行われますが、HashMapのパラメータがあり、変更すると痛みを伴う可能性があります。代わりにMapを渡すと、何も変更する必要がなくなり、コードはより柔軟になります。

9
追加された
あるタイプから別のタイプへの変更(HashMapからTreeMap)だけでなく、多態性のサポートについてもそうです。オブジェクトの内部実装ではなく、契約(インタフェース)に依存する必要があります。
追加された 著者 ewernli,
@ewernli私は例を挙げようとしていたので、私はその点を逃したと思います。
追加された 著者 Jesus Ramos,