[Java]戻り値の型がジェネリクス Listメソッドを作るサンプル
書式
1.private static <T> List<T> 関数名(Class<T> clz)
2.List<クラス名> psLst = getPsInfoLst(クラス名.class);
3.public boolean isAssignableFrom(Class<?> cls)
このClassオブジェクトが表すクラスまたはインタフェースが、指定されたClassパラメータが表すク ラスまたはインタフェースと等しいかどうか
4.public T cast(Object obj)
このClassオブジェクトが表すクラスまたはインタフェースにオブジェクトをキャストします。
使用例
1.Personの定義
public class Person { private String username; private int age; public Person(String username, int age) { this.username = username; this.age = age; } // get set省略 }
2.戻り値の型がリストジェネリクスメソッドを定義
package com.arkgame.demo; import java.util.ArrayList; import java.util.List; public class ListPersonDemo { public static void main(String[] args) { //戻り値の型がジェネリクス List<Person> psLst = getPsInfoLst(Person.class); // リストの要素を出力 for (Person ps : psLst) { String name = ps.getUsername(); int age = ps.getAge(); System.out.println("名前: " + name + " 年齢: " + age); } System.out.println("リストのサイズ: " + psLst.size()); } // 戻り値の型がジェネリクス private static <T> List<T> getPsInfoLst(Class<T> clz) { List<T> cftLst = new ArrayList<T>(); //Personクラスのオブジェクト配列を宣言 Person[] objArr = { new Person("user01", 21), new Person("user02", 33), new Person("user03", 44) }; for (Person ps : objArr) { //クラス等しいかどうか藩邸 if (clz.isAssignableFrom(ps.getClass())) { //クラスをオブジェクトにキャスタ cftLst.add(clz.cast(ps)); } } return cftLst; } }
実行結果
名前: user01 年齢: 21
名前: user02 年齢: 33
名前: user03 年齢: 44
リストのサイズ: 3