反射
Class:
概述:代表Class文件内容的类.
Class内容主要包括 成员变量 构造函数 成员方法
类加载器:
负责将.class文件加载到内存中,并为之生成对应的Class对象
类加载器的组成
Bootstrap ClassLoader 根类加载器
Extension ClassLoader 扩展类加载器
System ClassLoader 系统类加载器
反射机制:
就是通过Class 对象,去使用该文件中的成员变量,构造方法,成员方法.
获取字节码文件对象:
1.Object类中的getClass()方法.
2.数据类型的静态属性:class
3.Class中的静态方法:
public static Class forName(String className)
注意:
开发中使用第三种.
类中成员的三种类的表现形式:
成员变量类: Field 包含所有成员变量的信息
构造方法类: Constructor 包含所有构造方法的信息
成员方法类: Method 包含所有方法的信息
这三种类分别表示类中成员的具体信息.
Decelare:可以忽略权限修饰符进行获取.
通过反射获取构造方法并使用.
先获取字节码文件对象,利用其中的获取单个构造器方法并创建对象.
通过反射获取成员变量并使用
通过字节码文件对象获取单个成员变量,使用其中的set()方法,为成员变量进行赋值.
通过反射获取成员方法并使用.
通过字节码文件对象获取单个成员方法, 再通过方法对象调用invoke()方法,返回对象.如果方法是私有的,则要通过方法对象调用SetAccessible()方法.然后再调用invoke()方法,创建对象. |
|