Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

反射 API 能做什么,底层怎样实现?

先说出你的答案

定义边界、关键机制、一个反例;P8题再补容量、失败与验证。

查看完整题解

参考回答

直接回答

反射允许程序在运行时取得类、字段、方法和构造器的信息,并在权限允许时读取字段、调用方法或创建实例。Class 是入口之一,Method、Field、Constructor 表示对应成员。反射并不意味着可以无条件越过 private、模块边界或修改任意字段。

讲清原理

运行环境保存类的类型和成员信息,反射对象提供访问这些信息的 API。方法调用还涉及参数检查、访问检查以及实际目标调用;被调用方法抛出的异常通常通过 InvocationTargetException 包装。

实现细节要注明版本:OpenJDK 从 JDK 18 起,用方法句柄重新实现核心反射,不能继续把旧式“反射调用达到固定次数后生成访问器”当作 Java 21 的通用规则。API 契约与具体 JDK 的实现不是一回事。

例子与易错点

var method = String.class.getMethod("substring", int.class);
System.out.println(method.invoke("Java", 2)); // va

getMethod 主要查找 public 方法,也会考虑继承;getDeclaredMethod 查当前类型声明的成员,不保证有使用权限。trySetAccessible() 可能返回 false,深反射还受模块是否开放等条件限制。不要把反射当作绕过所有封装的万能工具。

相关题:第 33 题、第 51 题。

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。