标签:使用 一个 机制 编译 方式 blank color 文件 相同
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。
今天又被学员问到这个问题了,索性专门做个小知识点来讲解反射是怎么起作用的,发现还是可以在不学习Spring等框架的基础上,举一些例子来辅助理解反射如何起作用。
1. 首先准备两个很简单的业务类
2. 非反射方式切换不同的业务方法调用
当需要从第一个业务方法切换到第二个业务方法的时候,使用非反射方式,必须修改代码,并且重新编译运行,才可以达到效果
3. 反射方式
使用反射方式,首先准备一个配置文件,就叫做spring.txt吧, 放在src目录下。 里面存放的是类的名称,和要调用的方法名。
在测试类Test中,首先取出类名称和方法名,然后通过反射去调用这个方法。
当需要从调用第一个业务方法,切换到调用第二个业务方法的时候,不需要修改一行代码,也不需要重新编译,只需要修改配置文件spring.txt,再运行即可。
使用这个例子,可以较好得理解反射的一个应用场景。这也是Spring框架的最基本的原理,只是它做的更丰富,安全,健壮。这个例子如果有兴趣自己照着做一遍,我放在这里:
http://how2j.cn/k/reflection/reflection-usage/1111.html
静态编译:在编译时确定类型,绑定对象,即通过。
动态编译:运行时确定类型,绑定对象。动态编译最大限度发挥了java的灵活性,体现了多态的应用,有以降低类之间的藕合性。
(1)优点:一句话,反射机制的优点就是可以实现动态创建对象和编译,体现出很大的灵活性,特别是在J2EE的开发中,它的灵活性就表现的十分明显。比如,一个大型的软件,不可能一次就把把它设计的很完美,当这个程序编译后,发布了,当发现需要更新某些功能时,我们不可能要用户把以前的卸载,再重新安装新的版本,假如这样的话,这个软件肯定是没有多少人用的。采用静态的话,需要把整个程序重新编译一次才可以实现功能的更新,而采用反射机制的话,它就可以不用卸载,只需要在运行时才动态的创建和编译,就可以实现该功能。
(2)缺点:它的缺点是对性能有影响。使用反射基本上是一种解释操作,我们可以告诉JVM,我们希望做什么并且它满足我们的要求。这类操作总是慢于只直接执行相同的操作。
反射机制是框架技术的原理和核心部分。通过反射机制我们可以动态的通过改变配置文件(以后是XML文件)的方式来加载类、调用类方法,以及使用类属性。这样的话,对于编码和维护带来相当大的便利。在程序进行改动的时候,也只会改动相应的功能就行了,调用的方法是不用改的。更不会一改就改全身。
反射其实就是通过反编译解析出类或dll文件的结构,然后通过遍历得到相应的元素。它就是通过动态解析,得到我们所需的属性和方法。
在此,我想说,学习一个东西,一定要结合实际,联系生活,看看它是怎么来的,为什么要有。只有这样,我的学习才能越来越轻松。
标签:使用 一个 机制 编译 方式 blank color 文件 相同
原文地址:http://www.cnblogs.com/lsohvaen001/p/7857773.html