List list = new ArrayList();

Android用語集

カテゴリー: java.util  閲覧数:420 配信日:2013-10-30 21:38


テーマ


ArrayList list = new ArrayList();」ではなく「List list = new ArrayList();」と書く理由


前提


・ArrayListは、Listインターフェイスをimplementsした実装クラス
・Listはインタフェースなので、「List list = new List();」記述は不可能


結論


ArrayList 特有の機能を使う必要がある場合
・ArrayList list = new ArrayList();

Listインターフェイスだけの機能で十分な場合
・List list = new ArrayList();



List list


List list = new ArrayList();
1.listをListインターフェイスで宣言
2.そこへ「Listインターフェイスをimplementsしたクラス(=ArrayList)のインスタンス」を格納
・つまり、ArrayListクラスのインスタンスを生成して、Listインターフェイス型のリスト「list」へ格納している

特徴
1.「Listインターフェイスをimplementsしたクラスのインスタンス」なら何でも格納可能
2.「Listインターフェイス」の機能(メソッド)を利用可能
・「list」オブジェクトは、Listインターフェイス型メソッドが利用可能
・「list」オブジェクトは、ArrayList実装クラス型のメソッドは利用不可
・つまり、ArrayList実装クラス型の機能(メソッド)を使う予定はないが、Listインターフェイス型の機能(メソッド)は使いたい、場合に利用


ArrayList list


ArrayList list = new ArrayList();
1.listをArrayListクラスで宣言
2.そこへ「Listインターフェイスをimplementsしたクラス(=ArrayList)のインスタンス」を格納
・つまり、ArrayListクラスのインスタンスを生成して、ArrayListクラス型のリスト「list」へ格納している

特徴
1.「ArrayListクラスのインスタンス」のみ格納可能
2.「ArrayListクラス」の機能(メソッド)のみ利用可能
・「list」オブジェクトは、Listインターフェイス型メソッドが利用可能
・「list」オブジェクトは、ArrayList実装クラス型のメソッドも利用可能
・つまり、Listインターフェイス型だけではなくArrayList実装クラス型の機能(メソッド)も使いたい、場合に利用