Java从很早就提供了反射技术,我们在很多的程序中会使用到这种技术,他的应用场合总结起来有三方面:
1.编写一些程序时,对程序中的一些类名需要或者方法名不能在程序中写死,可能是根据配置文件中的某个参数
而定,在运行的过程中根据这个参数来决定使用的类名或方法名。
2.在程序运行的过程中,对于某一对象并不知其确切的类名,只知道其方法名以及参数,或者此对象内部的实
例变量,却要在程序中调用该方法,或使用该实例变量,就可以反射的方法来实现。
3.在调用一些第三方库或者在使用其他的框架层或系统层API时,可能这些库或API根据其版本的不同变化较大。
比如某些类中的某些方法在低版本中没有而由高版本添加,或者是某些类在低版本和高版本有很大的不同。
我们开发的程序需要兼容这些不同,在某些特殊的功能上需要对不同的版本做出不同的处理。但是我们又不
可能去针对这些不同开发不同的程序。这个问题可以使用反射机制得到部分解决。在代码中判断版本的不同,
然后根据版本的不同使用反射调用不同的API,注意:这里是反射调用,如果不适用反射,则程序有可能就
不能通过编译。
其中前两方面在很多的程序或框架中都由使用,而第三种场合容易被忽视。