class.getinterfaces()返回当前类直接implements的接口数组,不包含父类或父接口继承的接口;如dog implements animal、movable则返回{animal.class, movable.class},而animal的父接口living不会出现。

Java中通过反射获取类实现的接口列表,用的是 Class.getInterfaces() 方法,它返回该类直接实现的所有接口(不包括父类实现的接口),返回类型是 Class[]。
getInterfaces 只返回直接实现的接口
这个方法不会递归查找父类或父接口所实现的接口,只关注当前类声明时 implements 的那些。比如:
class Dog implements Animal, Movable { ... }
调用 Dog.class.getInterfaces() 会返回 {Animal.class, Movable.class};
如果 Animal 自己还 extends Living,那 Living 不会被包含在结果里。
注意:它不包含继承来的接口
父类实现的接口不会出现在子类的 getInterfaces() 结果中。例如:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
class AnimalImpl implements Animal { ... }
class Dog extends AnimalImpl { ... }
此时 Dog.class.getInterfaces() 返回空数组 [],因为 Dog 没有直接 implements 任何接口。
想获取全部实现的接口(含继承链)?得自己遍历
若需完整接口集合(包括父类实现、父接口的父接口等),需递归处理:
- 调用
clazz.getInterfaces()获取当前层接口 - 对每个接口,再调用它的
getInterfaces()获取其父接口 - 同时递归获取父类(
clazz.getSuperclass())的全部接口 - 用
Set去重,避免重复添加(如多个类实现同一接口)
简单示例代码
打印某个类直接实现的接口名:
for (Class> intf : MyClass.class.getInterfaces()) {
System.out.println(intf.getName());
}
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










