码迷,mamicode.com
首页 > 编程语言 > 详细

Java反射

时间:2017-11-18 20:59:28      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:使用   一个   机制   编译   方式   blank   color   文件   相同   

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

今天又被学员问到这个问题了,索性专门做个小知识点来讲解反射是怎么起作用的,发现还是可以在不学习Spring等框架的基础上,举一些例子来辅助理解反射如何起作用。

1. 首先准备两个很简单的业务类

技术分享图片技术分享图片

2. 非反射方式切换不同的业务方法调用

技术分享图片

当需要从第一个业务方法切换到第二个业务方法的时候,使用非反射方式,必须修改代码,并且重新编译运行,才可以达到效果

3. 反射方式

使用反射方式,首先准备一个配置文件,就叫做spring.txt吧, 放在src目录下。 里面存放的是类的名称,和要调用的方法名。
在测试类Test中,首先取出类名称和方法名,然后通过反射去调用这个方法。

当需要从调用第一个业务方法,切换到调用第二个业务方法的时候,不需要修改一行代码,也不需要重新编译,只需要修改配置文件spring.txt,再运行即可。

技术分享图片技术分享图片

使用这个例子,可以较好得理解反射的一个应用场景。这也是Spring框架的最基本的原理,只是它做的更丰富,安全,健壮。这个例子如果有兴趣自己照着做一遍,我放在这里:

 

优缺点

        静态编译:在编译时确定类型,绑定对象,即通过。

        动态编译:运行时确定类型,绑定对象。动态编译最大限度发挥了java的灵活性,体现了多态的应用,有以降低类之间的藕合性。

        (1)优点:一句话,反射机制的优点就是可以实现动态创建对象和编译,体现出很大的灵活性,特别是在J2EE的开发中,它的灵活性就表现的十分明显。比如,一个大型的软件,不可能一次就把把它设计的很完美,当这个程序编译后,发布了,当发现需要更新某些功能时,我们不可能要用户把以前的卸载,再重新安装新的版本,假如这样的话,这个软件肯定是没有多少人用的。采用静态的话,需要把整个程序重新编译一次才可以实现功能的更新,而采用反射机制的话,它就可以不用卸载,只需要在运行时才动态的创建和编译,就可以实现该功能。

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

总结

        反射机制是框架技术的原理和核心部分。通过反射机制我们可以动态的通过改变配置文件(以后是XML文件)的方式来加载类、调用类方法,以及使用类属性。这样的话,对于编码和维护带来相当大的便利。在程序进行改动的时候,也只会改动相应的功能就行了,调用的方法是不用改的。更不会一改就改全身。

        反射其实就是通过反编译解析出类或dll文件的结构,然后通过遍历得到相应的元素。它就是通过动态解析,得到我们所需的属性和方法。

        在此,我想说,学习一个东西,一定要结合实际,联系生活,看看它是怎么来的,为什么要有。只有这样,我的学习才能越来越轻松。

Java反射

标签:使用   一个   机制   编译   方式   blank   color   文件   相同   

原文地址:http://www.cnblogs.com/lsohvaen001/p/7857773.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!