zoukankan      html  css  js  c++  java
  • java反射获得泛型参数getGenericSuperclass():获取到父类泛型的类型

    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  
    

      

  • 相关阅读:
    UVA-1595 Symmetry
    UVA-10763 Foreign Exchange
    剑指Offer
    剑指Offer
    剑指Offer
    剑指Offer
    剑指Offer
    剑指Offer
    剑指Offer
    剑指Offer
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/7359147.html
Copyright © 2011-2022 走看看