import java.util.List;
public class GenericSwapExample {
// ジェネリクスメソッド swapElements
public static <T> void swapElements(List<T> list, int index1, int index2) {
if (index1 < 0 || index1 >= list.size() || index2 < 0 || index2 >= list.size()) {
// インデックスが範囲外の場合は何もせず終了
return;
}
// インデックス1と2の要素を交換
T temp = list.get(index1);
list.set(index1, list.get(index2));
list.set(index2, temp);
}
public static void main(String[] args) {
// 整数型のリスト
List<Integer> intList = List.of(1, 2, 3, 4, 5);
// 文字列型のリスト
List<String> stringList = List.of("apple", "banana", "cherry", "date");
// 任意の型のリスト
List<Double> doubleList = List.of(1.1, 2.2, 3.3, 4.4, 5.5);
// 各リストの要素を表示
System.out.println("Original Integer List: " + intList);
System.out.println("Original String List: " + stringList);
System.out.println("Original Double List: " + doubleList);
// 各リストで swapElements メソッドを使用して要素を交換
swapElements(intList, 1, 3);
swapElements(stringList, 0, 2);
swapElements(doubleList, 2, 4);
// 交換後のリストの要素を表示
System.out.println("After Swapping Integer List: " + intList);
System.out.println("After Swapping String List: " + stringList);
System.out.println("After Swapping Double List: " + doubleList);
}
}
このコードでは、swapElements
メソッドを使用して整数型、文字列型、およびダブル型のリストの要素を交換しています。ジェネリクスメソッドを使用することで、異なる型のリストに対して同じメソッドを使用でき、コードの再利用性が向上します。
ジェネリクスメソッド
ジェネリクスメソッドは、ジェネリクスを使用してメソッド内で異なる型のデータを処理できるようにするためのメソッドです。ジェネリクスは、型パラメータを使用して、メソッドやクラスが汎用的に動作するようにします。これにより、型安全性が向上し、コードの再利用性が高まります。
ジェネリクスメソッドの基本構文は以下の通りです:
public <T> returnType methodName(T parameter) {
// メソッドの本体
}
ここで、<T>
は型パラメータであり、メソッド内で使用される型を表します。returnType
はメソッドが返す値の型です。T
型の引数 parameter
を取る例です。
以下に、ジェネリクスメソッドの主な特徴と使用例を示します。
特徴:
- 型安全性の向上: ジェネリクスを使用することで、コンパイル時に型の一貫性が確認され、実行時エラーを減少させます。
- コードの再利用性: 同じメソッドが異なる型で使えるため、コードの再利用が容易になります。
使用例:
public class GenericMethodExample {
// ジェネリクスメソッド
public static <T> T getFirstElement(T[] array) {
if (array == null || array.length == 0) {
return null;
}
return array[0];
}
public static void main(String[] args) {
// Integer型の配列
Integer[] intArray = {1, 2, 3, 4, 5};
// String型の配列
String[] stringArray = {"apple", "banana", "cherry"};
// ジェネリクスメソッドを使用して配列の最初の要素を取得
Integer firstInt = getFirstElement(intArray);
String firstString = getFirstElement(stringArray);
// 結果の表示
System.out.println("First Integer: " + firstInt);
System.out.println("First String: " + firstString);
}
}
この例では、getFirstElement
メソッドがジェネリクスメソッドとして実装されています。異なる型の配列を受け取り、最初の要素を取得することができます。これにより、同じメソッドが異なる型に対して使用でき、型安全性が確保されます。
ジェネリクスメソッドは、柔軟性と型安全性を提供し、異なる型に対して同じロジックを適用できる重要な概念です。これにより、コードの再利用性が向上し、プログラムの保守性が向上します。ジェネリクスメソッドは、コレクションやアルゴリズムの実装など、さまざまな場面で活用されます。
型安全性の向上と同時に、冗長なコードの記述を減らすことで、開発者はより効率的にコードを作成できます。ジェネリクスメソッドは、Javaの柔軟な機能の一環として、プログラミング言語の進化において不可欠な要素となっています。
ジェネリクスメソッドを適切に使用することで、型に依存しない柔軟なコードを実現し、バグを未然に防ぎ、保守性の高いプログラミングを実現できます。プログラミングの効率向上とコード品質の向上に寄与するジェネリクスメソッドは、現代のソフトウェア開発において不可欠な技術と言えるでしょう。