2012-05-05 4 views
1

私たちが使用する理由ハッシュマップのオブジェクトを作成し、マップ参照に割り当てる。どうして?

map abc = new HashMap(20);代わり=新規HashMapの(20)

のHashMapのABCの

これらの2つの間の差異を調べてください。

ご協力いただきありがとうございます。

+0

これは、できるだけ 'super'型リファレンスを使用する' Java'のコードデザインパターンです。同じ場合です – Asif

+0

生の型の使用を避け、ジェネリック型 'HashMap 'または 'Map 'を可能な限り使用してください。どちらも読みやすく、どちらの型も安全です。 – amit

+0

可能な複製の[Java - HashMap vs Mapオブジェクト](http://stackoverflow.com/questions/1348199/java-hashmap-vs-map-objects) –

答えて

5

最初のケースでは、abc変数はHashMapのタイプであり、これはMapインターフェイスの実装です。あとで考え直して、たとえばTreeMapを使用する場合は、コード内で多くの参照をHashMapに変更する必要があります。HashMapという特殊性を使用することができます。Map操作で十分です。

変数の型としてMapインターフェイスを使用すると、実装を簡単に変更できます。 再利用のためにクラスを設計するときは重要です。 Mapを引数にとるメソッドを使用している場合は、Mapの実装を使用してメソッドを呼び出すことができます。したがって、呼び出し元は、最も適切な実装を自由に使用できます。

+0

この回答もチェックしてください。http:// stackoverflow .com/questions/1348199/java-hashmap-vs-map-objects – tonio

+0

他の目的はありますか?一般的には、必要に応じていつでも参照を変更することができます。 – Vicky

+1

私は同意します。問題は "なぜマップマップではなく、' HashMap'を使うべきかということです。あなたは常に、オブジェクトのレンタルで最も高い可能性のある型を探すべきであり、レンタルで1レベル上に移動しないようにしてください。 – amit

関連する問題