総称型で作っておけば、後で使いまわせます。
総称型でstaticメソッドを作るサンプル
StringとIntegerの2つのリストから、それぞれ最大値を取得します。
最大値を取得するメソッドは、総称型でstaticメソッドにします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | import java.util.Arrays; import java.util.Comparator; import java.util.List; public class GenericsMethodTest { public static void main(String[] args) { //1つめ(String) List<String> list1 = Arrays.asList("a","c","b"); String s = max(list1, Comparator.naturalOrder()); System.out.println("list1:" + s); //2つめ(Integer) List<Integer> list2 = Arrays.asList(10, 100 , 50); int i = max(list2, Comparator.naturalOrder()); System.out.println("list2:" + i); } public static <T> T max(List<T> list, Comparator<T> c) { T maxT = null; for (T t : list) { if(maxT == null || c.compare(t, maxT) > 0) { maxT = t; } } return maxT; } } |
実行結果
StringとIntegerの2つのリストから取得した、それぞれの最大値が出力されます。
1 2 | list1:c list2:100 |
サンプルの解説
最大値を取得するメソッドは、総称型でstaticメソッドです。
また、クラス自体に型パラメータ(
メソッドの修飾子と返り値の間に型パラメータを記述することで、メソッド単位で違う型パラメータを記述することができます。
ユーティリティのようなクラスで使うことができますね。