java反射获得泛型参数getGenericSuperclass():获取到父类泛型的类型

Posted 人艰不拆_zmc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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  

  

以上是关于java反射获得泛型参数getGenericSuperclass():获取到父类泛型的类型的主要内容,如果未能解决你的问题,请参考以下文章

《Java架构筑基》从Java基础讲起——泛型与反射

注解和反射反射获取泛型反射获取注解

javajav 通过 反射 获取 泛型信息

java 如何获得List的泛型类型

泛型反射

Java中的反射