示例一:获取父类的泛型的类型
public class Emp<T, Q> {class Stu extends Emp<String, Integer> {}@Testvoid fun() {final Type type = Emp.class.getGenericSuperclass();final ParameterizedType parameterizedType = (ParameterizedType) type;System.out.println(parameterizedType.getActualTypeArguments()[0]);System.out.println(parameterizedType.getActualTypeArguments()[1]);}
}
示例二:获取成员变量的泛型类型
public class Emp<T, Q> {private static Emp<String, Integer> emp = new Emp<>();public static void main(String[] args) throws Exception {Field field = Emp.class.getDeclaredField("emp");Type genericType = field.getGenericType();System.out.println(genericType);ParameterizedType pt = (ParameterizedType) genericType;Type[] actualTypeArguments = pt.getActualTypeArguments();System.out.println(actualTypeArguments[0]);System.out.println(actualTypeArguments[1]);}
}
示例三:获取局部变量的泛型的类型
public class Emp<T, Q> {public static void main(String[] args) throws Exception {
Emp<String, Integer> emp = new Emp<>() { };final Type type = emp.getClass().getGenericSuperclass();ParameterizedType parameterizedType = (ParameterizedType) type;final Type[] types = parameterizedType.getActualTypeArguments();System.out.println(types[0]);System.out.println(types[1]);}
}