java反射可通过class对象直接获取类的直接父类和显式实现的接口:getsuperclass()返回直接父类class对象(无父类时为null),getinterfaces()返回直接实现接口的class数组(无接口时为空数组)。

Java 反射机制可以通过 Class 对象直接获取一个类的父类和它实现的所有接口,不需要实例化对象,也不依赖编译期已知类型。
获取父类信息
调用 getSuperclass() 方法即可获得直接父类的 Class 对象:
- 返回值为
Class>类型,表示该类继承的直接父类 - 如果当前类是
Object、接口、基本类型或void,则返回null - 数组类型会返回
java.lang.Object的Class对象 - Java 不支持多继承,所以每个类最多只有一个直接父类,无需处理数组返回
获取实现的接口信息
使用 getInterfaces() 方法获取所有直接实现的接口:
- 返回
Class>[]数组,包含当前类 显式 implements 的全部接口 - 不包含父类实现的接口,也不包含接口继承链中的父接口(如
ArrayList实现List,但不会自动列出Collection) - 若未实现任何接口,则返回空数组(不是
null)
实际使用示例
假设有一个类 TestReflect 实现了 Serializable 接口:
Class> clazz = TestReflect.class;
System.out.println("父类:" + clazz.getSuperclass().getName()); // 输出:java.lang.Object
Class>[] interfaces = clazz.getInterfaces();
for (Class> intf : interfaces) {
System.out.println("接口:" + intf.getName()); // 输出:java.io.Serializable
}
注意继承链与接口层级
反射只提供直接关系,如需完整继承结构或接口的父接口,需手动递归处理:
- 向上遍历父类:反复调用
getSuperclass()直到返回null - 展开接口继承:对每个接口再调用其
getInterfaces()获取它继承的父接口 - 接口中定义的抽象方法可通过
getMethods()或getDeclaredMethods()进一步分析
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











