[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

Java

Posted by arkgame