Java反射getGenericSuperclass用法
父类
public class Person<T1, T2> {
}
子类
public class Student extends Person<Integer, String> {
@SuppressWarnings("rawtypes")
public static void main(String[] args) {
Student student = new Student();
Class clazz = student.getClass();
System.out.println(clazz.getSuperclass());
Type type = clazz.getGenericSuperclass();
System.out.println(type);
ParameterizedType p = (ParameterizedType) type;
Type[] actualTypeArguments = p.getActualTypeArguments();
Class c1 = (Class) actualTypeArguments[0];
Class c2 = (Class) actualTypeArguments[1];
System.out.println(c1);
System.out.println(c2);
}
}
运行结果
class com.itheima.mytest.Person
com.itheima.mytest.Person<java.lang.Integer, java.lang.String>
class java.lang.Integer
class java.lang.String
参考文档
- Lion-King的博客 JAVA反射-getGenericSuperclass()用法
- Bruce的博客 Java反射之getGenericSuperclass()用法