重複の可能性:
Java - HashMap と Map オブジェクト
違いは何ですか
private Map<String, Integer> drawableMap = new HashMap<String, Integer>();
と
private HashMap<String, Integer> drawableMap = new HashMap<String, Integer>();
重複の可能性:
Java - HashMap と Map オブジェクト
違いは何ですか
private Map<String, Integer> drawableMap = new HashMap<String, Integer>();
と
private HashMap<String, Integer> drawableMap = new HashMap<String, Integer>();
代入式の左側にある変数の型は、オブジェクトの作成とは関係ありません。したがって、どちらの場合もまったく同じオブジェクトを作成しています。Java では、オブジェクトへの参照を変数に格納することしかできないため、その変数の型によって、変数が参照できるオブジェクトの型が制限されます。最初のケースでは、 を実装する任意のオブジェクトを参照できますMap
。2 番目の方法では、HashMap
オブジェクトのみが受け入れられます。
もう 1 つの結果は、最初のケースでHashMap
は、インターフェイスで宣言されているメソッドのみを呼び出すことができるのに対し、2 番目のケースでは、実装Map
に固有の追加のメソッドを呼び出すことができるということです。HashMap
ほとんどの場合、実装固有のメソッドが必要になることはほとんどないため、最初のケースが好まれます。完全な Collections Framework にも同じルールが当てはまります。
最初の例では、後で(たとえば)drawableMap
の他の実装に割り当てることができます。2 番目の例では、できません。s (およびそのサブクラス) に限定されます。一般に、最初のアプローチは、将来の柔軟性が向上するため、2 番目のアプローチよりも優先されます。Map
LinkedHashMap
HashMap
最終的に、最初のステートメントは、 のインスタンスである型 の変数を作成します。2 番目は、 のインスタンスでもあるタイプの変数を作成します。Map
HashMap
HashMap
HashMap