一、什么是JAVA的反射机制
Java反射是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(如public, static 等)、superclass(例如Object)、实现之interfaces(例如Cloneable),也包括fields和methods的所有信息,并可于运行时改变fields内容或唤起methods。
Java反射机制容许程序在运行时加载、探知、使用编译期间完全未知的classes。
换言之,Java可以加载一个运行时才得知名称的class,获得其完整结构。
二、JAVA反射机制的功能:
- 在运行时判断任意一个对象所属的类
- 在运行时构造任意一个类的对象
- 在运行时判段任意一个类所具有的成员变量和方法
- 在运行时调用任一个对象的方法
- 在运行时创建新类对象
- 在使用Java的反射功能时,基本首先都要获取类的Class对象,再通过Class对象获取其他的对象。
三、反射机制中获取Class对象的三种获取方式(以获取Employee为例):
//第一种方式:
//使用对象的getClass 方法
Employee e = new Employee();
Class clazz = e.getClass(); //c3是运行时类 (e的运行时类是Employee)
//第二种方式:使用给定类的字符串名称来关联class对象
Class clazz= Class.forName("Employee");
//第三种方式:
//java中任何类型都有一个静态的属性----.class .
Class clazz = Employee.class;
四、再来看看反射相关的一些接口和类: