详细内容:【威哥说】本文里波波老师将带领大家一起学习一下什么是反射,文中暂且没有详细给大家介绍反射如何去获取类中的所有属性和方法,更多的是介绍什么场景下会使用到反射,使用反射有什么好处和缺点,大家有自己的理解也可以相互探讨。
【直播】大家期待已久的直播再次来临,今晚7:30小白老师将继续与大家探讨“如何出色的完成一个APP,以及磨砺营的真实上线的实训项目”。我们不玩虚的,保证大家每一个项目都是真实上线的。最后还有威哥我为大家答疑的时间哟。欢迎大家前来学习。
【正文】反射,一种计算机处理方式。是程序可以访问、检测和修改它本身状态或行为的一种能力。
这是百度百科里的一个说法,我曾经还看到一个对反射的描述为:在运行状态中,对于任意一个class类,都能知道此类的所有属性和方法,对于任意一个对象都能对他的属性和方法进行调用。那在我的理解来看,就是动态的获取一个类的所有属性和方法。这个可以理解为反射的概念,或者说作用。
那么反射的使用在那些场景中呢?应用场景如下:当程序写完之后,如果想添加功能,没法直接创建对象(注意:此处是因为一个完整的程序代码已经成型了,封装好了,你无法直接创建对象),但是一般程序会在定义结构时为了扩展而对外提供接口,所以我们通过实现这个接口,并在使用时告诉程序类名称,然后去通过反射找到class文件,并针对其中的元素进行操作;第二就是为了适应变化,你传入什么类型,我对什么类型进行具体的操作,这类一般用于数据解析。
一般应用:
1、比如java中连接数据库操作时,内部的连接操作已经写好了,如果密码发生变化,我们不需要改变原有的代码逻辑,直接在配置文件中更改即可,这里登录操作就是一个已经封装好的完整的代码块,我不希望后续的更改一些东西时会动到我里面的代码,此时使用反射,很好的解决了这个问题。
2、比如咱们的计算机在设置时会提供对外访问的USB接口,那么连接USB接口的这一块操作计算机内部已经封装好了,不希望外部改动,此时就对外提供了一个访问的接口,你直接连接就行了,这里也使用到反射。
3、Android中请求网络数据时,要解析成什么对象,传入一个对应的class类型,直接根据类型解析数据......
可能很多初学者,甚至说开发已经有一年经验的开发者都有些没搞懂反射的概念,还有可能有些开发者一直知道这么去用,但是知其然不知其所以然。那今天讲一个简单的示例来给大家引申出这个概念。
(字数有限,详情请看图片或磨砺营官网,威哥公众号【mjw-java】)(联系我时,请说明是在博发网看到的,谢谢!)