反射中getSuperclass与getGenericSuperclass区别

#声明三个类

class Person {
}
class Teacher {
}
class Student extends Person {
}

#分别打印数据观察区别

 Class superclass = Student.class.getSuperclass();
 Type genericSuperclass = Student.class.getGenericSuperclass();
   System.out.println(superclass);
   System.out.println(genericSuperclass);

#输出结果:

class com.test.Person
com.test.Person

#总结
相同点:都返回当前对象所表示的类的超类。
不同点:getGenericSuperclass会包含该超类的泛型。
#补充
###getGenericSuperclass既然可以获取超类的泛型肯定能取出指定的泛型。
###实现代码如下

Type[] params = ((ParameterizedType) genericSuperclass).getActualTypeArguments();
		System.out.println((Class) params[1]);

###输出

class com.test.Teacher

其它相关博客:https://blog.csdn.net/rogerjava/article/details/18227303

你可能感兴趣的:(杂谈)