技术分享 JAVA基础 查看内容

getGenericSuperclass、ParameterizedType、getActualTypeArguments

老高 | 发布于 2016-04-21 22:19| 浏览()| 评论() | 收藏() | 点赞() | 打印

public class Person<T> {

}
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 com.test.Person
com.test.Person<com.test.Student>
class com.test.Student

发表评论(对文章涉及的知识点还有疑问,可以在这里留言,老高看到后会及时回复的。)

表情