课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
反射是程序员在学习java编程开发的时候需要重点掌握的一个编程机制,而今天我们就通过案例分析来了解一下,java反射机制的定义以及作用都有哪些。
一、反射的定义以及组成
关于反射,一般书上的定义是这样的:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制,这几句解释说明了反射的作用,动态的跟类进行交互,比如获取隐藏属性,修改属性,获取对象,创建对象或者方法等等,总之就一句话:
反射是一种具有与类进行动态交互能力的一种机制为什么要强调动态交互呢?
因为一般情况下都是动态加载,也就是在运行的时候才会加载,而不是在编译的时候,在需要的时候才进行加载获取,或者说你可以在任何时候加载一个不存在的类到内存中,然后进行各种交互,或者获取一个没有公开的类的所有信息,换句话说,开发者可以随时随意的利用反射的这种机制动态进行一些特殊的事情。
二、反射的组成
由于反射终也必须有类参与,因此反射的组成一般有下面几个方面组成:
1.java.lang.Class.java:类对象;
2.java.lang.reflect.Constructor.java:类的构造器对象;
3.java.lang.reflect.Method.java:类的方法对象;
4.java.lang.reflect.Field.java:类的属性对象;
三、反射的作用
前面只是说了反射是一种具有与Java类进行动态交互能力的一种机制,在Java和Android开发中,一般情况下下面几种场景会用到反射机制.
需要访问隐藏属性或者调用方法改变程序原来的逻辑,这个在开发中很常见的,由于一些原因,系统并没有开放一些接口出来,这个时候利用反射是一个有效的解决方法
自定义注解,注解就是在运行时利用反射机制来获取的。
在开发中动态加载类,比如在Android中的动态加载解决65k问题等等,模块化和插件化都离不开反射,离开了反射寸步难行。
四、反射的工作原理
我们知道,每个java文件都会被编译成一个.class文件,这些Class对象承载了这个类的所有信息,包括父类、接口、构造函数、方法、属性等,这些class文件在程序运行时会被ClassLoader加载到虚拟机中。
当一个类被加载以后,Java虚拟机就会在内存中自动产生一个Class对象,而我们一般情况下用new来创建对象,实际上本质都是一样的,只是这些底层原理对我们开发者透明罢了,我们前面说了,有了class对象的引用,就相当于有了Method,Field,Constructor的一切信息,在Java中,有了对象的引用就有了一切,剩下怎么发挥是开发者自己的想象力所能决定的了。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。