今天感觉还是有必要再理解一下
Java Reflection
。
在说
Reflection
之前,我感觉还是先对静态语言和动态语言有一个了解比较好,下面来看一下一些资料:
1
、
http://cavingdeep.cnblogs.com/archive/2005/08/03/206374.html
说明了什么是静态的,什么是动态的,总结一下就是:
动态语言,准确地说,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。比如众所周知的
ECMAScript(JavaScript)
便是一个动态语言。除此之外如
Ruby
、
Python
等也都属于动态语言,而
C
、
C++
等语言则不属于动态语言。(通俗的说法就是:静态的是事先进行规划,考虑到后面需要做的一些事情;而动态的是管他后面会是怎么样呢,先开始再说,要的就是速度,呵呵,这有点和我们生活中做人做事的方式有些相似
~
)
2
、
http://www.javaeye.com/topic/35763
对动态语言和静态语言的一个比较新颖的认识,主要从内存的分配和利用情况来说的,也就是说:动态语言不事先分配内存,到用的时候再说,而静态语言会先分配内存,并进行检查,大了放不下啊,呵呵
3
、
http://robbin.javaeye.com/blog/33971
讨论了静态语言和动态语言在开发方面的优势和使用情况等,还在讨论中,不好定论。
注:一般来说,静态语言比较容易调试,而动态语言不太容易调试,因为变数太多,呵呵。
由于静态语言不够灵活,再加上现在随着系统的扩大,以及框架建立的需要,所以说静态语言也需要越来越多的动态的特性,而作为现在首当其冲的
Java
语言,也要通过反射,在执行期间做一些动态的调整以适应多变的需求。
在
Reflection
机制中,最重要的一个类就是
Class
类,这里面记录了我们所定义的
class
中的一些信息,我们可以通过其获得我们定义的
变量、方法、构造函数以及父类等等,并且可以动态的对其进行调用,这样就可以在某些时候将我们没有事先设计的代码在运行期间执行,而不对原有的程序进行改变。
具体的使用样例可以参考:
Core Java 2
第六、七版,或者侯捷的
java Reflection
教程(下载地址:http://www.blogjava.net/Files/wqhtomcat/Java反射机制-javatwo-2004-reflection.rar)。