カテゴリー:
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実装クラス型の機能(メソッド)も使いたい、場合に利用