java反射学习
1.类加载器
(1) 负责将class文件加载到内存中,并为之生成对应的Class对象;
(2)类加载器的组成
Bootstrap ClassLoader 根类加载器
也被称为引导类加载器,负责java核心类的加载(比如System,String等在JDK中jre的lib目录下rt.jar文件中)
Extension ClassLoader 扩展类加载器
负责JRE的的扩展目录中jar包的加载(在JDK中jre的lib目录下的ext目录)
System ClassLoader 系统类加载器
负责在JVM启动时加载来自java命令的class文件,以及classpath环境变量所指定的jar包和类路径)
2.反射
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性,这样动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。(简单说:反射就是通过class文件对象,去使用该文件中的成员变量,构造方法,成员方法)
3.获取class文件对象的方式
A:Object类的getClass()方法
Person p = new Person();
Class c = p.getClass();
B:数据类型的静态属性class
Class c3 = Person.class;
C:Class类中的静态方法
public static Class forName(String className)
Class c4 = Class.forName("Reflect.Person"); //这里需要完整类名
4.通过反射获取构造方法并使用
(1)获取构造方法
public Constructor[] getConstructors(); 所有公共构造方法
public Constructor[] getDeclaredConstructors(); 所有构造方法
(2)获取单个构造方法