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

什么是反射?Java反射?反射的优缺点

目录

    • 什么是反射(Reflection )?
    • Java反射?
    • 反射的优缺点
    • 获取Class对象的三种方式:
    • java反射技术的应用场景

什么是反射(Reflection )?

主要是指程序可以访问、检测和修改它本身状态或行为的一种能力

Java反射?

JAVA反射机制是在运行状态中,对于任意一个类,获取这个类的所有属性和方法和调用它的任意一个方法和属性,这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

使用:

  • 在程序运行期动态判断任意一个对象所属的类。

  • 在程序运行期动态构造任意一个类的对象。

  • 在程序运行期动态判断任意一个类所具有的成员变量和方法。

  • 在程序运行期动态调用任意一个对象的方法(私有方法也可以调用)。

反射的优缺点

优点

  • 自由,使用灵活,不受类的访问权限限制。
  • 可以根据指定类名、方法名来实现方法调用,非常适合实现业务的灵活配置。

缺点

  • 因为反射不受类的访问权限限制,其安全性低,很大部分的java安全问题都是反射导致的;
  • 相对于正常的对象的访问调用,反射因为存在类和方法的实例化过程,性能也相对较低;
  • 破坏java类封装性,类的信息隐藏性和边界被破坏。

获取Class对象的三种方式:

★ 方式一
通过对象的getClass方法进行获取。这种方式需要具体的类和该类的对象,以及调用getClass方法。

Person p=new Person("Jack", 23);
Class c=p.getClass();//来自Object方法

★ 方式二
任何数据类型(包括基本数据类型)都具备着一个静态的属性class,通过它可直接获取到该类型对应的Class对象。这种方式要使用具体的类,然后调用类中的静态属性class完成,无需调用方法,性能更好。

 Class c=Person.class;Class c2=int.class;

★ 方式三
通过Class.forName()方法获取。这种方式仅需使用类全名,就可以获取该类的Class对象,更有利于扩展。

try {Class c=Class.forName("cn.hncu.reflect.test.Person");} catch (ClassNotFoundException e) {e.printStackTrace();}

java反射技术的应用场景

  • 通过配置信息调用类的方法
  • 结合注解实现特殊功能
  • 按需加载jar包或class:按需加载,需要用到哪些jar,按照程序动态运行的需求取加载这些jar。
  • 动态代理:反射机制可以实现动态代理,实现不改变原来代码的情况下,对原来对象的方法进行增强。
  • 框架开发: Spring、Hibernate、Struts等,都使用了反射机制,以提供更灵活、可扩展的特性。
http://www.lryc.cn/news/105106.html

相关文章:

  • 小红书2020校招测试开发后端笔试题卷三
  • python数据可视化Matplotlib
  • firewalld防火墙
  • iMacros WebBrowser Component for .NET
  • 3,堆,桶排序,排序总结【p4-p5】
  • 使用langchain与你自己的数据对话(四):问答(question answering)
  • 如何快速开拓海外华人市场?附解决方案!
  • 【云原生-制品管理】制品管理的优势
  • Java爬虫----HttpClient方式(获取数据篇)
  • 计算机视觉实验:图像增强应用实践
  • ES6:Generator函数详解
  • 前端小练-产品宣传页面
  • arm学习之stm32设备树学习-中断控制led灯亮灭+字符设备指令控制led灯亮灭
  • 快速开发框架若依的基础使用详解
  • RabbitMQ 教程 | 第4章 RabbitMQ 进阶
  • 小程序如何从分类中移除商品
  • P1219 [USACO1.5] 八皇后 Checker Challenge
  • 如何在不使用脚本和插件的情况下手动删除 3Ds Max 中的病毒?
  • SpringCloud Gateway 在微服务架构下的最佳实践
  • Android studio修改app图标
  • <C++> 三、内存管理
  • 大模型开发(十五):从0到1构建一个高度自动化的AI项目开发流程(上)
  • HarmonyOS 开发基础(二)组件拼凑简单登录页面
  • flutter minio
  • ChatGPT:人工智能交互的新时代
  • C. Binary String Copying - 思维
  • 哈工大计算机网络课程网络安全基本原理详解之:密钥分发中心与公钥认证中心
  • md5sum
  • 图文档数字化:实现高效管理的几大步骤
  • 服务器磁盘占用过高分析