Java反射核心是运行时获取类完整结构,分四步:①通过.class、getClass()或Class.forName()获取Class对象;②读取类名、父类、接口等元数据;③用declared系列方法获取本类成员,非declared含继承public成员;④安全调用方法、字段和构造器,注意异常处理与权限控制。

Java 反射机制的核心目标,就是在运行时无需编译期类型信息,就能拿到任意类的完整结构——包括类名、父类、接口、字段、方法、构造器,甚至注解和修饰符。关键不在于“能不能”,而在于“怎么拿得准、用得稳”。下面分几步说清楚实际用法。
第一步:正确获取 Class 对象
所有反射操作都从 Class 对象开始,它就像类在 JVM 中的“身份证”。三种方式用途不同,不能混用:
-
类名.class:编译期已知类型时最推荐,安全、高效、不触发类初始化。例如
User.class -
对象.getClass():已有实例时最直接,比如
new User().getClass(),返回的是该实例真实类型的 Class - Class.forName("全限定类名"):字符串加载,适用于配置驱动或插件场景(如 JDBC 加载驱动),但会执行静态代码块,可能引发意外初始化
注意:同一个类的这三种方式获取的 Class 对象是同一个引用(== 返回 true)。
第二步:读取类的基本元数据
拿到 Class 后,立刻可以查到类本身的顶层信息:
-
getName()得到全限定名(如"com.example.User"),getSimpleName()得到简单名(如"User") -
getSuperclass()返回父类 Class 对象,可链式调用继续查父类的父类 -
getInterfaces()返回该类直接实现的所有接口 Class 数组 -
getModifiers()返回 int 值,配合Modifier.toString()解析出public final等修饰符
第三步:获取字段、方法、构造器(重点区分 declared)
这是最容易出错的地方——必须看清方法名里有没有 Declared:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
-
getDeclaredFields():本类定义的所有字段(含 private),但不含继承的;要读写私有字段,必须先调field.setAccessible(true) -
getFields():只返回 public 字段,且包括从父类或接口继承来的 public 字段 -
getDeclaredMethods():本类声明的所有方法(含 private、static、final),不包含继承的 -
getMethods():只返回 public 方法,包括从父类和接口继承的 -
getDeclaredConstructors():本类所有构造器(含 private),可用于 new 实例;getConstructors()仅限 public
每个返回的 Method / Field / Constructor 对象都支持进一步查询:参数类型、返回类型、异常列表、注解等,例如 method.getParameterTypes() 或 field.getType()。
第四步:安全调用与访问(绕过权限不是目的,而是手段)
反射不是为了破坏封装,而是在必要场景下提供可控的灵活性:
- 调用方法:用
method.invoke(obj, args);静态方法传null作第一个参数 - 读写字段:用
field.get(obj)和field.set(obj, value);静态字段同样传null - 创建对象:用
clazz.getDeclaredConstructor(String.class).newInstance("arg"),可调私有构造器 - 务必捕获常见异常:
NoSuchMethodException、IllegalAccessException、InvocationTargetException等
JDK 12+ 对 setAccessible(true) 更加严格,生产环境建议配合模块化策略或启动参数谨慎使用,避免被 SecurityManager 拦截。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










