Java の Generics <E>
Generics
は、抽象化を改善し、メソッド、インターフェース、または異なるオブジェクトやデータ型で単一のクラスを使用する方法を提供するために Java5 で追加されました。
T
はタイプを表し、V
は値に使用されるなど、Generics
に関連する一般的な命名規則があります。この記事では通常 Element を表す Generics
で使用される別のタイプパラメータ名である E
を見ていきます。
Java で Generics``<E>
を使用して新しいリストを作成する
Generics
を理解する最良の方法は、コレクションを使用することです。Generics
がないと、リストのようなコレクションは、多くのコードを記述していたためです。それでも、Generics
を導入した後は、コードをほとんど使用せずに List
やその他のコレクションを作成できます。
一般名 <E>
は Element の略で、Java コレクションフレームワークで一般的に使用されます。以下の例では、listElements
と呼ばれる可変引数演算子 ...
を持つジェネリック型 E
パラメーターを受け取る newListWithElements()
と呼ばれる静的メソッドを作成します。
newListWithElements()
メソッドは、ジェネリック型パラメーターであるタイプ <E>
のリスト
を返します。また、戻り型の前と static
の後に型パラメーターを使用するか、ジェネリックメソッドを使用してアクセス修飾子を使用します。
関数内で、int
変数 listElementsSize
を作成し、listElements
パラメーターの長さで初期化します。null
の場合は、ゼロで初期化します。
次に、ArrayList
コンストラクターを作成し、List
のサイズである listElementsSize
を渡します。これは、タイプ <E>
の List
を返します。
次に、すべての listElements
要素を収集し、Collections.addAll()
を使用して新しいリストを作成します。これにより、すべての要素が新しいリスト listOfElements
に追加されます。メソッドから返す新しいリストがあります。
main()
関数では、String
、Integer
、Boolean
などの型で newListWithElement()
を 3 回呼び出します。Generics
を使用すると、1つのメソッドで複数のオブジェクトタイプのリストを作成できます。
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class JavaEGenerics {
public static void main(String[] args) {
List<String> newStringList = newListWithElements("element1", "element2", "element3");
List<Integer> newIntList = newListWithElements(11, 12, 13);
List<Boolean> newBooleanList = newListWithElements(true, false);
System.out.println(newStringList);
System.out.println(newIntList);
System.out.println(newBooleanList);
}
static <E> List<E> newListWithElements(E... listElements) {
int listElementsSize = 0;
if (listElements != null)
listElementsSize = listElements.length;
List<E> listOfElements = new ArrayList<>(listElementsSize);
if (listElements != null)
Collections.addAll(listOfElements, listElements);
return listOfElements;
}
}
出力:
[element1, element2, element3]
[11, 12, 13]
[true, false]
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn