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

JAVA OOP 反射

反射(Reflection)是Java语言的一种特性,允许程序在运行时动态获取类的信息并操作类或对象的属性、方法、构造器等。反射的核心是通过java.lang.reflect包下的类(如ClassMethodFieldConstructor等)实现。


获取Class对象的三种方式

通过类名获取Class对象:

Class<?> clazz = Class.forName("java.lang.String");

通过对象实例获取Class对象:

String str = "Hello"; Class<?> clazz = str.getClass();

通过类字面常量获取Class对象:

Class<?> clazz = String.class;

动态创建对象

通过反射调用无参构造器创建对象:

Class<?> clazz = Class.forName("java.lang.String"); String str = (String) clazz.newInstance(); // 已过时,推荐getDeclaredConstructor()

通过有参构造器创建对象:

Constructor<?> constructor = clazz.getDeclaredConstructor(String.class); String str = (String) constructor.newInstance("Hello");

操作字段(Field)

获取并修改私有字段的值

Class<?> clazz = MyClass.class; Field field = clazz.getDeclaredField("privateField"); field.setAccessible(true); // 解除私有权限限制 Object obj = clazz.newInstance(); field.set(obj, "newValue"); // 设置字段值 Object value = field.get(obj); // 获取字段值

调用方法(Method)

动态调用方法:

Class<?> clazz = MyClass.class; Method method = clazz.getDeclaredMethod("methodName", String.class); // 方法名+参数类型 Object obj = clazz.newInstance(); Object result = method.invoke(obj, "arg1"); // 调用方法

反射的应用场景

  • 动态代理:如Spring AOP基于反射实现。
  • 框架设计:如Spring通过反射加载Bean。
  • 注解处理:运行时解析注解(如JUnit、Lombok)。
  • 泛型擦除补偿:通过反射获取泛型实际类型。

反射的优缺点

优点

  • 灵活性高,支持动态操作类或对象。
  • 实现通用框架和工具(如JSON序列化)。

缺点

  • 性能开销:反射操作比直接调用慢。
  • 安全隐患:可能破坏封装性(如访问私有成员)。
  • 代码可读性降低。
http://www.jsqmd.com/news/458242/

相关文章:

  • AI写论文神器集合!4款AI论文生成工具,全面提升论文写作效率!
  • OpenClaw 部署教程 - 详细版
  • 直接开撸代码!最近在搞机械臂轨迹优化,发现用7次非均匀B样条做多目标优化真香。这玩意儿既能保证轨迹平滑,又能同时优化时间、能耗和冲击,三杀成就达成
  • 从此告别拖延 8个降AI率软件降AIGC网站深度测评与推荐
  • AIGEO是覆盖哪些AI平台四川谦与谦寻科技有限公司源头研发厂家
  • 终于有人把精益和六西格玛讲清楚了!
  • 最近在搞基于TMS320F28335的永磁同步电机控制,发现这玩意儿真是既要玩明白算法又得跟寄存器死磕。直接上干货,聊聊代码里那些有意思的细节
  • 格式总出错?AI论文工具 千笔ai写作 VS speedai,本科生专属高效神器!
  • 2026年海南落户代办热销榜单:助你轻松获取社保缴纳证明、学历认证等技能证书
  • 2026年华为云OpenClaw(Clawdbot)小白7分钟搭建及使用喂饭级教程
  • 人工智能虚拟细胞外囊泡AIVEVs
  • 【C++】控制台贪吃蛇小游戏(Windows API)完整代码与详解
  • HoRain云--DjangoAdmin获取当前用户全攻略
  • 导师严选! 更贴合自考需求的AI论文网站,千笔AI VS 知文AI
  • oracle使用模版创建分区表
  • 华为OD机试真题精讲:机器人的活动区域(Python/Java/C++多语言实现)
  • AI写专著的高效之路,实用工具助力轻松完成专著创作
  • LUBTOP2025 总评榜:润滑油行业品牌实力的量化分析与参考框架
  • adc逆向数据,只含模拟部分:16bit pipleline原理图,仅供个人学习使用,适合有一...
  • 用过才敢说 9个AI论文网站深度测评,专科生毕业论文写作必备工具推荐
  • 泰凌825x之UUID代码剖析
  • 大数据的农业大棚环境数据温度预测系统设计与实现
  • 【Linux系统编程】目录和用户操作 时间函数与实例
  • HP8304@ACP#HP8304与MT3905参数对比
  • 汇川H3U带10轴(3伺服7步进)+IT6100E触摸屏项目,上下料机,7个步进加了一个4PM...
  • 增加Swap分区
  • 专科生收藏!用户挚爱的AI论文网站 —— 千笔·专业学术智能体
  • 科研人福音!AI写专著工具大推荐,让创作如行云流水般顺畅
  • 广州迅腾文化传播有限公司发布“阿处共识2.0”:深耕数字化资产管理,构建“恒温”逻辑协同生态
  • 探索自适应滤波器:从LMS算法到Simulink仿真