2

重複の可能性:
参照型としてのリストと ArrayList?

次の方法で配列リストを作成することの違いは何ですか?

List listA = new ArrayList(); and ArrayList alist = new ArrayList();
4

4 に答える 4

11

1 つ目は、そのインターフェイスによって定義された変数にリストを割り当て、2 つ目はクラスによって変数を定義します。

最初の宣言により、後で実装を変更できます。

List listA = new LinkedList();

は有効ですが、2 番目は実装を変更できません。

ArrayList listA = new LinkedList(); // <<<=== INVALID

Java 5 以降Listはジェネリック型であるため、型の安全性を向上させるために型パラメーターを指定する必要があることに注意してください。

List<ClassA> listA = new ArrayList<ClassA>();
于 2012-10-05T14:12:27.583 に答える
5

最初のケースでは、 を使用してリストの実装をコードに隠していますlistA

これは、コードの他の部分の依存関係をチェックすることなく、後で別のタイプのリストに変更できることを (ほぼ) 保証するため、しばしば推奨listAArrayListListます。 .

于 2012-10-05T14:11:48.137 に答える
0

それはずっと議論されている質問です:)

いつでも簡単に実装を変更できるため、具象クラスではなくインターフェイスを使用する必要があります

そのクラスの特定の機能にアクセスしたい場合にのみ Concrete クラスを使用する必要があります

于 2012-10-05T14:12:43.457 に答える
0

参照型が違うだけで同じです。

オブジェクトを参照するときは、ArrayList のような具体的な実装ではなく、常にインターフェイス (List など) を使用する必要があります。

于 2012-10-05T14:12:46.047 に答える