[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