Java反射可通过Class对象获取类的直接父类和实现接口。使用getSuperclass()获取直接父类,若为Object、基本类型或数组则返回null;通过getInterfaces()获取直接实现的接口数组,不包含父类实现的接口。示例显示Dog类获取Animal父类,Duck类获取Swimmable接口及父类Bird实现的Flyable接口。需递归遍历继承链才能获取全部父类与接口信息。

Java反射机制可以通过Class对象获取一个类的父类和实现的接口信息。这在框架开发、序列化、依赖注入等场景中非常有用。
使用getSuperclass()方法可以获取当前类的直接父类的Class对象。
说明:
Object、基本类型或数组类型,返回null。示例代码:
立即学习“Java免费学习笔记(深入)”;
<pre class="brush:php;toolbar:false;">
class Animal {}
class Dog extends Animal {}
public class Test {
public static void main(String[] args) {
Class<?> clazz = Dog.class;
Class<?> superClass = clazz.getSuperclass();
System.out.println("父类名称: " + superClass.getName()); // 输出: Animal
}
}
使用getInterfaces()方法可以获取当前类或接口直接实现的所有接口的Class数组。
注意:
示例代码:
立即学习“Java免费学习笔记(深入)”;
<pre class="brush:php;toolbar:false;">
interface Flyable { void fly(); }
interface Swimmable { void swim(); }
class Bird implements Flyable {
public void fly() { System.out.println("Bird is flying"); }
}
class Duck extends Bird implements Swimmable {
public void swim() { System.out.println("Duck is swimming"); }
}
public class InterfaceTest {
public static void main(String[] args) {
Class<?> clazz = Duck.class;
Class<?>[] interfaces = clazz.getInterfaces();
System.out.println("Duck直接实现的接口:");
for (Class<?> intf : interfaces) {
System.out.println(intf.getName()); // 输出: Swimmable
}
// 获取父类实现的接口(如Flyable)
Class<?> superClazz = clazz.getSuperclass();
Class<?>[] superInterfaces = superClazz.getInterfaces();
for (Class<?> intf : superInterfaces) {
System.out.println("父类实现的接口: " + intf.getName()); // 输出: Flyable
}
}
}
如果需要获取一个类所有的父类和接口(包括间接的),可以编写递归或循环方法遍历整个类层级。
建议步骤:
getSuperclass()逐级向上直到Object或null。getInterfaces()收集接口。java.lang.reflect.Modifier判断类是否为接口或抽象类。以上就是Java反射机制如何获取对象的父类和接口信息的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号