Person.java
package test;
public class Person<T> {
}
Student.java
package test;
public class Student extends Person<Student> {
}
testmain.java
package test;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
public class testmain {
public static void main(String[] args) {
Student student = new Student();
Class oriclass = student.getClass();
/**
* getSuperclass() 获取该类的父类
*/
System.out.println(oriclass.getSuperclass());
/**
* getGenericSuperclass() 获取带有泛型的父类
* Type 是 java 编译语言中所有类型的公共高级接口,它们包括 原始类型,参数化类型,数组类型,类型变量和基本类型
*/
Type type = oriclass.getGenericSuperclass();
System.out.println(type);
/**
* ParameterizedType参数化类型,即泛型
*/
ParameterizedType p = (ParameterizedType)type;
/**
* getActualTypeArguments获取参数化类型的数组,泛型可能有多个
*/
Class c = (Class)p.getActualTypeArguments()[0];
System.out.println(c);
}
}