* 反射定义:在运行状态下,JVM会获取该类的字节码文件对象,调用该类的
* 一切方法,属性;使用Class类中的方法进行解剖,所以需要先获取每个字
* 节码文件对应Class的对象.
* java.lang.Class 描述字节码文件的类,class的方法可以获取字节码文
* 件的对象,对象的方法和属性.
* 类中的成员也是对象
构造方法对象,成员变量对象,成员方法对象
构造方法对象的描述类 java.lang.reflect.Constructor
此类提供方法,运行解剖后的类的构造方法
成员变量对象的描述类 java.lang.refelct.Field
此类提供方法,直接运行或者修改解剖后类的成员变量
成员方法对象的描述类 java.lang.refelct.Method
此类提供方法,直接运行解剖后类的方法
成员变量对象的描述类 java.lang.refelct.Field
此类提供方法,直接运行或者修改解剖后类的成员变量
成员方法对象的描述类 java.lang.refelct.Method
此类提供方法,直接运行解剖后类的方法
Class类中的方法,获取一个字节码文件对象中的构造器
Constructor[] getConstructors() 获取字节码文件中的构造方法,所有公共权限
返回值是描述构造方法对象的类 Constructor 存储的是数组
Constructor getConstructor(Class... p)获取指定构造方法,一个,根据构造方法的参数列表定
Constructor类有一个方法,可以运行获取到的构造器
Object newInstance(Object...o)
package cn.itcast.reflect;
/*
* 反射Person类,获取构造方法,并运行
*/
import java.lang.reflect.*;
public class ReflectDemo1 {
public static void main(String[] args)throws Exception {
Class clazz = Class.forName("cn.itcast.reflect.Person");
//获取指定,空参数的构造方法,运行
Constructor con = clazz.getConstructor();
System.out.println(con);
//运行获取到的构造方法 Constructor类的方法 newInstance
Object obj = con.newInstance();
System.out.println(obj);
}
}
|