Java 1.3之后一个重要特征是反射(reflection),它允许程序在运行的时候动态地生成对象、执行对象的方法、改变对象的属性。
通俗来讲,就是根据给出的类名(字符串方式)来动态地生成对象。这种编程方式可以让对象在生成时才决定到底是哪一种对象。
spring就是通过反射来实现依赖注入(DI)的。这一点如何体现?IOC容器spring根据配置文件中给出的类名来生成相应的对象。
反射的应用是很广泛的,很多的成熟的框架,比如象Java中的Hibernate、Spring框架,.Net中 NHibernate、Spring.Net框架都是把“反射”做为最基本的技术手段。
反射技术其实很早就出现了,但一直被忽略,没有被进一步的利用。当时的反射编程方式相对于正常的对象生成方式要慢至少得10倍。现在的反射技术经过改良优化,已经非常成熟,反射方式生成对象和普通对象生成方式,速度已经相差不大了,大约为1-2倍的差距。