import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; public class Student extends Person<Student> { public static void main(String[] args) { Student st=new Student(); Class clazz=st.getClass(); //getSuperclass()获得该类的父类 System.out.println(clazz.getSuperclass()); //getGenericSuperclass()获得带有泛型的父类 //Type是 Java 编程语言中所有类型的公共高级接口。它们包括原始类型、参数化类型、数组类型、类型变量和基本类型。 Type type=clazz.getGenericSuperclass(); System.out.println(type); //ParameterizedType参数化类型,即泛型 ParameterizedType p=(ParameterizedType)type; //getActualTypeArguments获取参数化类型的数组,泛型可能有多个 Class c=(Class) p.getActualTypeArguments()[0]; System.out.println(c); } } class Person<T> { public Person() { System.out.println(getClass().getName()); } }
最近很忙好久没写blog了。看了一个JDK获取父类的函数和大家分享一下
上面程序返回的结果是
mytest.Student
class mytest.Person
mytest.Person<mytest.Student>
class mytest.Student
原文地址:http://blog.csdn.net/u010278923/article/details/41896449