Javaにおける汎用配列の作成について
**Javaでは、直接汎用配列を作成することはできません。**代わりに、配列の要素型として汎用型インターフェースを使用します。これにより、配列にさまざまな型のオブジェクトを格納することが可能になります。
汎用型インターフェースの利用
汎用型インターフェースを定義します。例えば、
List
インターフェースは汎用型インターフェースです。List<String> stringList = new ArrayList<>();
配列の要素型として汎用型インターフェースを指定します。
List<String>[] stringArray = new List[3];
重要ポイント
- 配列の型は、汎用型インターフェースではなく、そのインターフェースの配列型です。
例
// 汎用型インターフェース List
List<String> stringList = new ArrayList<>();
stringList.add("apple");
stringList.add("banana");
// 汎用型インターフェースの配列
List<String>[] stringArray = new List[3];
stringArray[0] = stringList;
stringArray[1] = new ArrayList<>();
stringArray[2] = new LinkedList<>();
注意:
- 配列の要素型は、配列の宣言時に指定されます。
- 配列の要素型を変更することはできません。
Javaにおける汎用配列の例
// 汎用型インターフェース List
List<String> stringList = new ArrayList<>();
stringList.add("apple");
stringList.add("banana");
// 汎用型インターフェースの配列
List<String>[] stringArray = new List[3];
stringArray[0] = stringList;
stringArray[1] = new ArrayList<>();
stringArray[2] = new LinkedList<>();
コード解説
汎用型インターフェース Listを定義します。
List<String> stringList = new ArrayList<>();
List
は汎用型インターフェースで、String
型を要素として受け取ります。ArrayList
はList
インターフェースを実装する具体的なクラスです。
汎用型インターフェースの配列を作成します。
List<String>[] stringArray = new List[3];
List<String>[]
は、List<String>
型の要素を持つ配列を宣言します。new List[3]
は、要素数が3の配列を生成します。
配列の要素に汎用型インターフェースのインスタンスを格納します。
stringArray[0] = stringList; stringArray[1] = new ArrayList<>(); stringArray[2] = new LinkedList<>();
stringArray[0]
にstringList
を格納します。stringArray[1]
に新しいArrayList
インスタンスを格納します。
配列の型パラメータ化
- 配列の型自体を汎用型にすることで、要素型を柔軟に指定できます。
- ただし、Javaの型システムの制限により、直接配列の型を汎用型にすることはできません。
ジェネリックメソッド
- メソッドの引数や戻り値の型を汎用型にすることで、汎用的な処理を実現できます。
- ジェネリックメソッドを使用することで、配列の要素型を柔軟に扱うことができます。
コレクションフレームワーク
- Javaのコレクションフレームワークは、汎用的なデータ構造を提供します。
- ArrayList、LinkedList、HashSetなどのコレクションクラスは、汎用型インターフェースを実装しており、さまざまな型のオブジェクトを格納できます。
配列の型キャスト
- 配列の型をキャストすることで、特定の型の要素を扱うことができます。
- ただし、型キャストは慎重に行う必要があります。誤った型キャストはClassCastExceptionが発生する可能性があります。
public static <T> T[] createArray(T[] array) {
return array;
}
このメソッドは、任意の型の配列を受け取り、同じ型の配列を返します。
java arrays generics