专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 Java基础学习:Java反射机制

Java基础学习:Java反射机制

更新时间:2020-03-30 16:20:03 来源:动力节点 浏览1822次


  一、什么是反射?


  对于程序员来说,应该很少需要直接使用反射工具;之所以在语言中提供它们,是为了支持其他Java特性,比如对象序列化、JavaBeans以及RMI。还有就是在很多框架中,也是应用到了反射机制。


  在初学时,只知道这是个生成驱动实例的语句,而这其实就是应用了反射


Java基础学习:Java反射机制


  二、反射能做什么?


  主要的四个功能:


  -获取对象所属的类


  -获取类的成员变量、方法


  -运行时创建对象


  -运行时调用对象的方法


  其它功能


  可用构建器创建新对象,通过Constructor类取得其它类的构造函数


  用get()和set()方法读取和修改与Field对象关联的字段


  用invoke()方法调用与Method对象关联的方法,即调用其他类的方法


  此外,我们可调用方法getFields(),getMethods(),getConstructors(),分别返回用于表示字段、方法以及构建器的对象数组,取得并修改数组的信息


  取得其他类的父类、实现的接口、权限修饰符、属性类型等


  三、反射的优缺点


  优点:可以实现运行时动态创建对象,增加程序的灵活性。这种灵活性怎么体现的呢?比如我们在开发一个大型的软件,编译发布后,我们很可能需要更新一些功能,但因为软件已发布,我们肯定不能要求用户把以前的卸载,再重新安装新的版本。如果我们采用静态的解决方法的话,需要重新编译整个程序,而如果采用反射机制的话,就可以不用卸载,只需要在运行时才动态的创建和编译,就可以实现更新的功能。


  缺点:


  性能影响。使用反射基本上是一种解释操作,我们可以告诉JVM,我们希望做什么并且它满足我们的要求。这类操作总是慢于只直接执行相同的操作。


  破坏封装,因为通过反射可以访问私有变量或方法,这样可能会存在安全性的问题。比如我们知道String是不可变的,因为这个类被final修饰说明不可继承,并且String其实就是被final修饰的一个字符数组value,value是private的,但是通过反射是可以访问到private成员变量,因此通过反射,我们其实是可以改变String的,很明显,这样是不安全的。


Java基础学习:Java反射机制


  以上就是动力节点java培训机构的小编针对“Java基础学习:Java反射机制”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。


提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>