一、概述:其实说简单点,反射就是一种机制,可以让你仅知道类的名字的情况下,可以了解整个类的内部的结构,并且访问内部的成员和方法等。
二、反射机制详解:http://www.cnblogs.com/bojuetech/p/5896551.html
三、作用:
1、在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;(动态获取信息)
2、对于任意一个对象,都能够调用它的任意一个方法和属性;(动态调用对象的方法)
3、增加程序的灵活性,避免将程序写死到代码里。
例如:
实例化一个 person()对象, 不使用反射, new person(); 如果想变成 实例化 其他类, 那么必须修改源代码,并重新编译。
使用反射: class.forName("person").newInstance(); 而且这个类描述可以写到配置文件中,如 **.xml, 这样如果想实例化其他类,只要修改配置文件的"类描述"就可以了,不需要重新修改代码并编译。
很少情况下是非用反射不可的。大多数情况下反射是为了提高程序的灵活性。因此一般框架中使用较多。因为框架要适用更多的情况,对灵活性要求较高。
一些设计模式中也有反射机制的应用,如:动态代理。
注:资源文件不需要编译,直接替换,重启服务即可。(eg:修改MyBatis的xml文件)