父类
packagecom.itheima.mytest;
publicclassPerson<T1,T2>{
}
子类
packagecom.itheima.mytest;
importjava.lang.reflect.ParameterizedType;
importjava.lang.reflect.Type;
publicclassStudentextendsPerson<Integer,String>{
@SuppressWarnings("rawtypes")
publicstaticvoidmain(String[]args){
Studentstudent=newStudent();
//getClass()获得该类的类类型(即类型变量)
Classclazz=student.getClass();
//getSuperclass()获得该类的父类
System.out.println(clazz.getSuperclass());
//getGenericSuperclass()获得该类带有泛型的父类
Typetype=clazz.getGenericSuperclass();
System.out.println(type);
//Type是Java编程语言中所有类型的公共高级接口。它们包括原始类型、参数化类型、数组类型、类型变量和基本类型。
//ParameterizedType参数化类型,即泛型
//将Type转化为参数化类型(即泛型)
ParameterizedTypep=(ParameterizedType)type;
//getActualTypeArguments()获取参数化类型的数组,泛型可能有多个
Type[]actualTypeArguments=p.getActualTypeArguments();
//将Type转化为类型变量(即Class)
Classc1=(Class)actualTypeArguments[0];
Classc2=(Class)actualTypeArguments[1];
System.out.println(c1);
System.out.println(c2);
}
}
运行结果
classcom.itheima.mytest.Person
com.itheima.mytest.Person<java.lang.Integer,java.lang.String>
classjava.lang.Integer
classjava.lang.String
参考链接:
https://blog.csdn.net/qq_26424655/article/details/71515741