重複の可能性:
参照型としてのリストと ArrayList?
次の方法で配列リストを作成することの違いは何ですか?
List listA = new ArrayList(); and ArrayList alist = new ArrayList();
重複の可能性:
参照型としてのリストと ArrayList?
次の方法で配列リストを作成することの違いは何ですか?
List listA = new ArrayList(); and ArrayList alist = new ArrayList();
1 つ目は、そのインターフェイスによって定義された変数にリストを割り当て、2 つ目はクラスによって変数を定義します。
最初の宣言により、後で実装を変更できます。
List listA = new LinkedList();
は有効ですが、2 番目は実装を変更できません。
ArrayList listA = new LinkedList(); // <<<=== INVALID
Java 5 以降List
はジェネリック型であるため、型の安全性を向上させるために型パラメーターを指定する必要があることに注意してください。
List<ClassA> listA = new ArrayList<ClassA>();
最初のケースでは、 を使用してリストの実装をコードに隠していますlistA
。
これは、コードの他の部分の依存関係をチェックすることなく、後で別のタイプのリストに変更できることを (ほぼ) 保証するため、しばしば推奨listA
さArrayList
れList
ます。 .
それはずっと議論されている質問です:)
いつでも簡単に実装を変更できるため、具象クラスではなくインターフェイスを使用する必要があります
そのクラスの特定の機能にアクセスしたい場合にのみ Concrete クラスを使用する必要があります
参照型が違うだけで同じです。
オブジェクトを参照するときは、ArrayList のような具体的な実装ではなく、常にインターフェイス (List など) を使用する必要があります。