当前位置: 首页 > news >正文

Java的反射机制

Java的反射机制

Java反射机制

一、反射定义

反射:程序运行期间,动态获取类的全部信息、动态创建对象、调用方法/属性/构造器的机制。
打破封装,运行时操作类的任意成员。

二、核心作用

  1. 运行时获取类名、父类、接口、字段、方法、构造方法
  2. 动态创建类实例对象
  3. 动态调用任意成员方法、访问/修改成员变量
  4. 框架底层核心(Spring、MyBatis、注解都基于反射)

三、反射核心:Class字节码对象

一切反射都从Class类对象开始

获取Class对象3种方式(必背)

java

// 1. 类名.class (编译期获取)
Class<?> c1 = User.class;

// 2. 对象.getClass() (运行期获取)
User u = new User();
Class<?> c2 = u.getClass();

// 3. Class.forName("全类名") (最常用,框架加载类)
Class<?> c3 = Class.forName("com.xxx.User");

四、反射常用API

  1. 获取构造器: getConstructor()  /  getDeclaredConstructor()
  2. 创建对象: newInstance()
  3. 获取成员变量: getField()  /  getDeclaredField()
  4. 获取成员方法: getMethod()  /  getDeclaredMethod()
  5. 暴力破除权限: setAccessible(true)  可访问private私有成员

五、优缺点

优点

  • 灵活性极强,动态编码
  • 是主流框架、配置文件、注解开发的底层基础

缺点

  • 破坏封装性
  • 运行效率偏低
  • 过多使用会降低代码可读性

六、适用场景

  • 框架底层开发、ORM映射
  • 配置文件读取、动态代理
  • 注解解析、通用工具类编写

我给你整理超短考试默写版和完整带代码演示版二选一?Java反射机制(期末必考·精简背诵版)

一、反射定义

反射:程序运行期间,动态获取类的全部信息、动态创建对象、调用方法/属性/构造器的机制。
打破封装,运行时操作类的任意成员。

二、核心作用

  1. 运行时获取类名、父类、接口、字段、方法、构造方法
  2. 动态创建类实例对象
  3. 动态调用任意成员方法、访问/修改成员变量
  4. 框架底层核心(Spring、MyBatis、注解都基于反射)

三、反射核心:Class字节码对象

一切反射都从Class类对象开始

获取Class对象3种方式(必背)

java

// 1. 类名.class (编译期获取)
Class<?> c1 = User.class;

// 2. 对象.getClass() (运行期获取)
User u = new User();
Class<?> c2 = u.getClass();

// 3. Class.forName("全类名") (最常用,框架加载类)
Class<?> c3 = Class.forName("com.xxx.User");

四、反射常用API

  1. 获取构造器: getConstructor()  /  getDeclaredConstructor()
  2. 创建对象: newInstance()
  3. 获取成员变量: getField()  /  getDeclaredField()
  4. 获取成员方法: getMethod()  /  getDeclaredMethod()
  5. 暴力破除权限: setAccessible(true)  可访问private私有成员

五、优缺点

优点

  • 灵活性极强,动态编码
  • 是主流框架、配置文件、注解开发的底层基础

缺点

  • 破坏封装性
  • 运行效率偏低
  • 过多使用会降低代码可读性

六、适用场景

  • 框架底层开发、ORM映射
  • 配置文件读取、动态代理
  • 注解解析、通用工具类编写