JAVA反射机制
在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
功能:
在运行时判断任意一个对象所属的类
在运行时构造任意一个类的对象
在运行时判断任意一个类所具有的成员变量和方法
在运行时调用任意一个对象的方法
Reflection是Java被视为动态或准动态语言的一个关键性质。这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public,static等)、superclass(例如Object)、实现之interfaces(例如Serializable),也包括fields和methods的所有信息,并可于运行时改变fields内容或调用methods
在JDK中,主要由以下类来实现反射机制
Class类:代表一个类
Field类:代表类的成员变量
Method:代表类的方法
Constructor:代表类的构造方法
Array类:提供动态创建数组,以及访问数组的元素的静态方法
java中的任何一个对象都会对应一个Class对象
要使用反射,首先需要获得待处理类或对象所对应的Class对象。
获取某个类或某个对象所对应Class对象的常用的3种方式:
(1)使用Class类的静态方法forName, Class.forName("java.lang.String");
(2)使用类得.class语法:String.class
(3)使用对象的getClass()方法