什么是反射: Reflection enables Java code to discover information about the fields, methods and constructors of loaded classes, and to use reflected fields, methods, and constructors to operate on their underlying counterparts on objects, within security restrictions. (中文不好翻译)什么时候必需用到反射: 当你只有一个类的定义,但是不能显式地创建一个类的时候,就需要使用反射机制来操作。一个最简单的例子就是jdbc编程中加载类驱动就是通过反射机制来实现的。
如下例子,spring也是个好例子。
http://blog.csdn.net/sunyujia/archive/2008/09/20/2956027.aspx
http://blog.csdn.net/sunyujia/archive/2008/06/01/2501709.aspx
http://blog.csdn.net/sunyujia/archive/2008/06/01/2500684.aspx
一点简单的介绍吧 在框架的开发中 用到了很多的反射机制
Reflection enables Java code to discover information about the fields, methods and constructors of loaded classes, and to use reflected fields, methods, and constructors to operate on their underlying counterparts on objects, within security restrictions. (中文不好翻译)什么时候必需用到反射:
当你只有一个类的定义,但是不能显式地创建一个类的时候,就需要使用反射机制来操作。一个最简单的例子就是jdbc编程中加载类驱动就是通过反射机制来实现的。
Class.forName("");
吗?,这个就是一个反射的例子,反射就是跟概你类的路创建该类的实例
比如:你的路径是com.gz.Test。
那么,你想创建这个实例,就不用Test test=new Test();
而已Test test=Class.forName("com.gz.Test");这样就可以产生该类的例实了。
为什么要使用反射,这就是程序“松耦合”的需要,如果要说的话可以很一下子 很难说清楚
反射机制是Java语言的特征之一,它允许运行中的Java程序对自身进行检查,或说是自审,并能直接操作程序的内部属性.
比方说,它能取得任何一个已知名称的Class类的内部信息,包括其修饰符,父类类型,实现的接口interfaces,同时也包括属性字段和方法的所有信息,并可以在运行时改变属性内容和调用方法.当你想获得某个类的描述信息时,可以调用反射机制.
有三种方法:(如下)(Employee为你获得信息的类)
1.使用Object类的getClass()方法
Employee em;
Class c=em.getClass();2.使用静态方法forName(String name)
String name=Employee;
Class c=Class.forName(name);3.使用"类名.class"的方式
Class c=Employee.class;