首页/ 学科题库/ java/ Java反射机制概述
java 实战教程

Java反射机制概述

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方式:.class、getClass()、Class.forName()
  3. 核心API:Class、Field、Method、Constructor
  4. 广泛应用于框架、序列化、动态代理等场景
想在手机上练这篇的配套题目?
使用微信 卷王开发者小程序/App,首页顶部扫一扫识别下方二维码,即可解锁本讲对应真题与错题本。
了解产品 App
← 上一篇 泛型最佳实践 下一篇 → Java Class对象获取