0

重複の可能性:
Java - HashMap と Map オブジェクト

違いは何ですか

private Map<String, Integer> drawableMap = new HashMap<String, Integer>();

private HashMap<String, Integer> drawableMap = new HashMap<String, Integer>();
4

2 に答える 2

1

代入式の左側にある変数の型は、オブジェクトの作成とは関係ありません。したがって、どちらの場合もまったく同じオブジェクトを作成しています。Java では、オブジェクトへの参照を変数に格納することしかできないため、その変数の型によって、変数が参照できるオブジェクトの型が制限されます。最初のケースでは、 を実装する任意のオブジェクトを参照できますMap。2 番目の方法では、HashMapオブジェクトのみが受け入れられます。

もう 1 つの結果は、最初のケースでHashMapは、インターフェイスで宣言されているメソッドのみを呼び出すことができるのに対し、2 番目のケースでは、実装Mapに固有の追加のメソッドを呼び出すことができるということです。HashMap

ほとんどの場合、実装固有のメソッドが必要になることはほとんどないため、最初のケースが好まれます。完全な Collections Framework にも同じルールが当てはまります。

于 2012-12-22T11:07:48.770 に答える
0

最初の例では、後で(たとえば)drawableMapの他の実装に割り当てることができます。2 番目の例では、できません。s (およびそのサブクラス) に限定されます。一般に、最初のアプローチは、将来の柔軟性が向上するため、2 番目のアプローチよりも優先されます。MapLinkedHashMapHashMap

最終的に、最初のステートメントは、 のインスタンスである の変数を作成します。2 番目は、 のインスタンスでもあるタイプの変数を作成します。MapHashMap HashMapHashMap

于 2012-12-22T11:05:49.373 に答える