import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
/**
* @author 长得太帅,要好好反省!
* @description 两个泛型的类
*/
class Person<T1,T2> {
}
/**
* 继承的时候,泛型被显式地指定了Integer, Boolean,所以能够被通过反射获取
*/
class Student extends Person<Integer, Boolean> {
public static void main(String[] args) {
Student student = new Student();
Class clazz = student.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 c1 = (Class)p.getActualTypeArguments()[0];
System.out.println(c1);
Class c2 = (Class)p.getActualTypeArguments()[1];
System.out.println(c2);
}
}
java获取类的T.class 类的泛型参数类型
最新推荐文章于 2022-04-19 13:57:13 发布