java-反射获得泛型参数

来源:互联网 发布:为什么学java 编辑:程序博客网 时间:2024/05/16 14:21
public class Person<T> {  }  
import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;/** * Created by Administrator on 2017/6/20. */public class Student extends Person<String> {    public static void main(String[] args) {        Student st = new Student();        Class clazz = st.getClass();        System.out.println(clazz);//class Student//getSuperclass()获得该类的父类        System.out.println(clazz.getSuperclass());//class Person//getGenericSuperclass()获得带有泛型的父类//Type是 Java 编程语言中所有类型的公共高级接口。它们包括原始类型、参数化类型、数组类型、类型变量和基本类型。        Type type = clazz.getGenericSuperclass();        System.out.println(type);//Person<java.lang.String>//ParameterizedType参数化类型,即泛型        ParameterizedType p = (ParameterizedType) type;//getActualTypeArguments获取参数化类型的数组,泛型可能有多个        Class c = (Class) p.getActualTypeArguments()[0];        System.out.println(c);//class java.lang.String    }}

参考:

java反射获得泛型参数GETGENERICSUPERCLASS()