2

重複の可能性:
Collection インターフェイスを使用して ArrayList オブジェクトを作成するポリモーフィズムの利点は何ですか?

 ArrayList al=new ArrayList();
 Collection c=new ArrayList();

alobjectとはどう違いますcか? 両方とも同じですか、それとも何ですか?

4

6 に答える 6

11

コレクション API は、オブジェクトのコレクションに対する操作をサポートする一連のクラスとインターフェイスです。

クラスの例: HashSet、HashMap、ArrayList、LinkedList、TreeSet、および TreeMap。インターフェイスの例: Collection、Set、List、および Map。

一方、ArrayList: サイズ変更可能な配列の実装です。コレクションの「リスト」グループに属しています。null を含むすべての要素を許可します。スレッドセーフではありません。

コレクション: コレクションを操作するポリモーフィック アルゴリズムを実装します。

コレクション: コレクション階層のルート インターフェイスです。

次のインターフェイス (コレクション型) は Collection インターフェイスを拡張します。

  • リスト
  • 設定
  • ソートセット
  • NavigableSet
  • デケ

Java には Collection インターフェースの使用可能な実装が付属していないため、リストされているサブタイプのいずれかを使用する必要があります。Collection インターフェイスは、これらの Collection サブタイプのそれぞれが共有する一連のメソッド (動作) を定義するだけです。これにより、使用している特定のタイプのコレクションを無視して、コレクションとして扱うことができます。これは標準の継承であるため、魔法のようなものは何もありませんが、それでも時々便利な機能になることがあります。

于 2013-01-11T06:14:13.890 に答える
4

2 つ目は、インターフェースへのコーディングです。これにより、副作用なしに を別のもの(または など)ArrayListに交換できます。CollectionVectorTreeSet

于 2013-01-11T06:09:11.697 に答える
3

同じオブジェクトが作成されますが、参照が異なります。

したがって、2番目のケースでは、キャストしない限り、ArrayListそれがちょうどであるかのように only で作業できます。Collection

于 2013-01-11T06:07:59.687 に答える
2
Collection foo = new ArrayList();

これはより一般的であり、コレクションの他の実装の利点を得ることができます。

于 2013-01-11T06:15:08.427 に答える
2

Collectionインターフェースです。メソッドを見てください。

List インターフェイスには、インデックスでアクセスするメソッドがあります。リストもCollectionインターフェースを拡張します。

ArrayListListインターフェイスを実装する具体的な実装です。配列リスト

あなたがやっていることは、いくつかの抽象化です。

もしあなたがそうするなら :

Collection foo = new ArrayList();

Listインターフェイス メソッドにアクセスすることはできません。インデックスでアクセスするなど。

于 2013-01-11T06:10:51.290 に答える
2

ではal、配列リストのみを使用することがブロックされています。arraylist以外は変換/キャストできません。

インターフェイスcを実装する任意のクラスを変換/キャストできます。Collection

于 2013-01-11T06:12:50.473 に答える