反射:程序运行时动态加载类的详细信息 反射使用的是.class加载到方法区中的过程
分析类信息的能力 jdk 编译 加载器 加载进jvm(所有的成员变量存储在field数组中)(方法在method中)(构造器在constructor)等等
.java .class 在磁盘(磁盘阶段)
Class.forName("全类名") 加载器(类对象阶段) 类名.class 都在这里获取信息
jvm在内存(运行时阶段) 对象名.getClass
class.getDeclaredMethod(name,int a,String b);(private类型)
获取 执行 暴力反射
Class.forName(类名);类名.class;对象.getClass();
1.getClassO;
2.调用静态方法 forName 获得类名对应的 Class 对象。获取路径
3.class 将代表匹配的类对象。
反射可以获得类的一切信息——属性、构造方法、普通方法、方法的入参类型返回类型入参名字、是否静态、public/private、注解信息(给类方法属性加标记)
setAccessible——获取类的私有成员 设置为true
void setAccessible(boolean flag)
boolean isAccessible()
static void setAccessible(AccessibleObject[] arry.boolean flag)
invoke——代理 负责执行,弥补反射只能获取不能执行的缺陷