Class.isInterface() 方法用于判断 Class 对象是否代表接口,是则返回 true,否则 false;它仅依据源码中是否用 interface 关键字定义,不依赖运行时实现或代理类型。

Class.isInterface() 是 Java 中用于判断一个 Class 对象是否代表接口的内置方法,返回 boolean 值:是接口返回 true,否则返回 false。
基本用法很简单
直接调用该方法即可,无需额外参数:
-
String.class.isInterface()→false(String是普通类) -
List.class.isInterface()→true(List是接口) -
Runnable.class.isInterface()→true -
int.class.isInterface()→false(基本类型不是接口) -
Integer.class.isInterface()→false(包装类是普通类)
注意和 isAssignableFrom、isInstance 的区别
别混淆这几个方法:
-
isInterface()只看当前Class是否定义为interface关键字(源码层面) -
isAssignableFrom(Class)判断能否赋值(比如List.class.isAssignableFrom(ArrayList.class)返回true) -
isInstance(Object)判断对象是否属于该类型(运行时实例检查)
实际场景中常配合反射使用
比如扫描包下所有类型,只处理接口:
立即学习“Java免费学习笔记(深入)”;
- 获取
ClassLoader加载的类列表 - 对每个
Class调用.isInterface() - 过滤出接口后,可进一步用
getMethods()获取其抽象方法
它不关心运行时实现或代理
即使某个类是动态代理生成的(如 JDK 动态代理),只要这个 Class 对象本身是接口定义,isInterface() 就返回 true;如果是代理类(非接口),哪怕实现了多个接口,也返回 false。


















