型パラメータを取得する
やりたいこと
Genericsで以下のような型パラメータが指定されていた場合、型パラメータに指定されたクラス名(jp.gr.java_conf.ksino.generics.ABean)を取得したい。
public class CBean { private List<jp.gr.java_conf.ksino.generics.ABean> aBeans;
実装
ParameterizedTypeで取れます。
import java.lang.reflect.Field; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; public class ParameterizedTypeTest { public static void main(String[] args) { try { Field field = CBean.class.getDeclaredField("aBeans"); ParameterizedType pType = (ParameterizedType)field.getGenericType(); Type[] typeArgs = pType.getActualTypeArguments(); if (typeArgs.length > 0) { System.out.println(typeArgs[0].getTypeName()); }
実行結果
jp.gr.java_conf.ksino.generics.ABean