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

【Java面试题】一分钟了解反射机制

什么是反射

反射是指在java程序运行过程中可以获取到任意一个类的属性和方法,还能调用任意一个对象的内部方法和属性。
在这里插入图片描述

反射的优点

  • 灵活性和动态性:反射可以在程序运行过程中动态的加载类,创建对象,调用方法,访问字段。可以根据实际需求动态的扩展和适应。提高了代码的灵活性
  • 是许多框架的基础:反射是很多Java语言框架的基础(spring/springboot),依赖注入,面向切面编程,注解的解析,这些都离不开反射
  • 解耦合和高可用:反射可以通过拷贝通用对象,序列化等方式,降低代码的耦合性,降低模块之间的依赖

反射的缺点

  • 安全性:反射可以绕过Java语言的访问控制机制,比如可以 直接访问到private字段,破坏了封装性,可能会导致数据泄露
  • 代码复杂:使用反射会使代码变得更加复杂,并且很多错误只有在运行中才能暴露出来
  • 性能开销大:反射机制由于需要进行解析等操作,会有一定的性能开销。

反射机制的使用场景

  • 依赖注入和控制反转:以spring/springboot为代表的Ioc框架,在启动时会去扫描带有注解的类,并通过反射机制实例化对象,并实现依赖注入
  • 注解:注解本身是一个标记,需要有人去读取这些标记,而反射机制就是注解的“读取器”,通过反射机制去读取类,方法,或者字段上是否有注解信息,并根据注解进行相应的逻辑操作
  • 动态代理和AOP:实现面向切面编程的常用手段是动态代理,而动态代理的实现是依赖于反射机制的。代理对象在内部调用真实对象的方法时,就是使用 反射机制的Method.invoke方法
  • 对象关系映射:比如mybatis框架,将数据库中查出来的一行行数据转化为一个个对象,就是使用反射机制。
http://www.dtcms.com/a/312169.html

相关文章:

  • 切换python多版本
  • 中州养老项目:Mybatis自动填充拦截器
  • 机器学习项目从零到一:加州房价预测模型(PART 2)
  • 李宏毅深度学习教程 第6-7章 自注意力机制 + Transformer
  • NVIDIA GPU架构
  • 浅拷贝与深拷贝的区别
  • 断路器瞬时跳闸曲线数据获取方式
  • 关于Sort的补充
  • SpringBoot 02 AOP
  • 王者荣耀模拟器:一款基于Python的文本角色扮演游戏
  • 译| Netflix内容推荐模型的一些改进方向
  • 测试时扩散的深度研究助手
  • Redis实战(6)-- 慢查询运用与理解
  • 图像加密学习日志————论文学习DAY4
  • 档案馆可视化:历史宝库的数字新貌
  • 使用 MySQL Shell 进行 MySQL 单机到 InnoDB Cluster 的数据迁移实践
  • 【Django】-5- ORM的其他用法
  • RAWINPUT避坑指南(涉及GetRawInputData/GetRawInputBuffer)
  • 详解Python标准库之命令行界面库
  • .env 文件
  • WinMerge:文件对比工具,支持各种格式文件对比,永久免费使用!
  • 软件交付终极闸口:验收测试全解析
  • GCC(GNU Compiler Collection)与人工智能实例
  • 基于深度学习的医学图像分析:使用MobileNet实现医学图像分类
  • 第14届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2022年12月18日真题
  • 【Linux】Linux编译器-gcc/g++使用
  • 广东省省考备考(第六十四天8.2)——判断推理(重点回顾)
  • 【领域热点】人工智能与大模型应用:开启软件领域新革命
  • 无法连接到 Google Container Registry (GCR)** 导致的镜像拉取失败
  • 数据结构与算法:字符串哈希