全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-11 6 分钟 ✍️ juanwangdev

Java反射机制概述

反射机制让Java在运行时具备动态获取类信息和调用方法的能力。

什么是反射

反射(Reflection)是指在程序运行时,对于任意一个类,都能知道这个类的所有属性和方法;对于任意一个对象,都能调用它的任意方法和属性。

核心类

类名作用
Class类的元数据描述
Field类的成员变量
Method类的方法
Constructor类的构造器
Annotation注解信息

获取Class对象的三种方式

Java
// 方式1:类名.class
Class<?> clazz1 = String.class;

// 方式2:对象.getClass()
String str = "hello";
Class<?> clazz2 = str.getClass();

// 方式3:Class.forName()(最常用)
Class<?> clazz3 = Class.forName("java.lang.String");

反射的核心能力

Java
// 获取类名
String className = clazz.getName();           // 全限定名
String simpleName = clazz.getSimpleName();    // 简单类名

// 获取修饰符
int modifiers = clazz.getModifiers();
boolean isPublic = Modifier.isPublic(modifiers);

// 获取父类和接口
Class<?> superClass = clazz.getSuperclass();
Class<?>[] interfaces = clazz.getInterfaces();

典型应用场景

  1. 框架设计:Spring的IoC容器、MyBatis的Mapper代理
  2. 序列化/反序列化:JSON库解析对象
  3. 动态代理:AOP实现
  4. 测试框架:JUnit注解扫描

注意事项

反射会牺牲一定的性能,频繁调用应缓存Class对象

反射可以突破访问修饰符限制,使用setAccessible(true)访问私有成员

反射操作不当会破坏封装性,应谨慎使用

要点总结

  1. 反射在运行时获取类信息,是Java动态性的基础
  2. 三种获取Class方式:.classgetClass()Class.forName()
  3. 核心API:Class、Field、Method、Constructor
  4. 广泛应用于框架、序列化、动态代理等场景

📝 发现内容有误?点击此处直接编辑

← 上一篇 Java元注解
下一篇 → Java字段反射
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库