理解为一个解剖重构的过程。动态加载一个类,获得这个类的字节码文件对象,再通过这个字节码文件对象去操作类中的各个成员变量。
3个方法加载字节码。
1)创建对象,然后调用对象的getClass()方法。
2)每个数据类型都有它的静态属性 类名.class。
3) forName()方法。Class clazz = class.forName(“类名”);
当一个类中成员是私有的, 必须通过getDeclaredMethod,getDeclaredField, getDeclaredConstructor 强制取出方法来调用,并调用setAccessible(true);然后才能用。这个就是暴力反射
|
|