getsuperclass() 返回当前类的直接父类class对象,若为object、接口、基本类型或数组则返回null;返回值不含泛型信息,需用getgenericsuperclass()获取泛型父类;调用前应判空以防npe。

Java 中通过 getSuperclass() 方法可以直接获取当前类的直接父类的 Class 对象,前提是该类不是 Object、不是接口、也不是基本类型或数组类型。
getSuperclass() 的基本用法
调用对象的 getClass().getSuperclass() 或直接在 Class 对象上调用 getSuperclass(),即可返回其直接父类的 Class 实例:
- 如果当前类是
Object,返回null - 如果当前类是接口、基本类型(如
int.class)、数组类型(如int[].class),也返回null - 对于普通类(如继承自
ArrayList的子类),返回其直接父类的Class
常见使用示例
比如定义一个类继承自 ArrayList<string></string>:
class MyList extends ArrayList<string> {}</string>
然后获取其父类 Class:
-
MyList.class.getSuperclass()→ 返回ArrayList.class -
ArrayList.class.getSuperclass()→ 返回AbstractList.class -
Object.class.getSuperclass()→ 返回null
注意泛型擦除的影响
getSuperclass() 返回的是运行时的原始父类类型,不包含泛型信息。例如 ArrayList<string>.class.getSuperclass()</string> 仍是 AbstractList.class,而非带泛型的类型。若需获取泛型父类(如 AbstractList<string></string>),应使用 getGenericSuperclass() 配合 Type 处理。
安全调用建议
为避免空指针异常,建议判空后再操作:
- 先检查
clazz.getSuperclass() != null - 再调用
getName()、getSimpleName()或继续反射操作 - 尤其在遍历继承链时,循环条件应以
superClass != null控制
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











