Java反射中,通过Class对象可获取类的包名、修饰符、父类和直接实现接口:包名用getPackage().getName()(默认包返回"(default package)");修饰符用getModifiers()配合Modifier工具类解析;父类用getSuperclass()(Object类返回null);接口用getInterfaces()返回直接实现的接口数组。

在Java中,通过反射可以动态获取类的元信息。要获取类的包名、修饰符、父类和实现的接口全集,主要使用Class对象提供的方法。
获取包名
调用getPackage()方法返回Package对象,再用getName()获取完整包路径;若类在默认包中,该方法返回null,需做空判断。
示例代码:
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
String packageName = clazz.getPackage() != null ? clazz.getPackage().getName() : "(default package)";
获取修饰符(访问权限与特性)
使用getModifiers()返回一个整型值,它是一个位掩码,需配合Modifier工具类解析。常用方法有Modifier.isPublic()、Modifier.isFinal()等,也可用Modifier.toString(int)直接转为字符串形式的修饰符组合。
立即学习“Java免费学习笔记(深入)”;
示例代码:
int modifiers = clazz.getModifiers();String modifierStr = Modifier.toString(modifiers); // 如 "public final"
获取父类
调用getSuperclass()返回直接父类的Class对象。注意:对于Object类,返回null;对于接口或基本类型,也返回null(接口没有父类,只有父接口)。
示例代码:
Class<?> superClass = clazz.getSuperclass();String superName = (superClass != null) ? superClass.getName() : "java.lang.Object";
获取实现的接口全集
调用getInterfaces()返回Class[]数组,包含该类**直接实现**的所有接口(不包括继承链中上级类实现的接口)。若未实现任何接口,则返回空数组(不是null)。
示例代码:
Class<?>[] interfaces = clazz.getInterfaces();String[] interfaceNames = Arrays.stream(interfaces).map(Class::getName).toArray(String[]::new);
注意:反射获取的信息均为编译时静态声明的内容,不反映运行时动态代理或字节码增强带来的变化。如果需要递归获取所有祖先接口(如接口继承的父接口),需手动遍历getInterfaces()并深度展开。

















