反射
底层框架实现采用反射

代码入门:
Properties properties = new Properties();
//读取=内容
properties.load(new FileInputStream("src/text.properties"));
//获取信息
String object = properties.getProperty("object");
String method = properties.getProperty("method");
//通过 类名获得 对象class
Class<?> aClass = Class.forName(object); //运行类型
//通过class 生成对象
Object o = aClass.newInstance();
//通过class 方法名 获取方法
Method method1 = aClass.getMethod(method);
//调用方法 invoke(对象)
method1.invoke(o);
反射原理图
编写类代码,编译转成字节码,运行 类先加载到堆 运行时 找到该类,创建对象调用方法

反射4大类
class
reflect
field
constructor

反射 优化
setAccessible(设为true) 取消访问检测

class类
对象放在堆 ,二进制数据放在方法区
有许多方法 可以操作对象

创建class对象方式
1. class.forname("里面需要全类名") 读配置文件
2. 类.class 多用于参数传递
3.对象.getclass
4.对象.getclass().getclassLoader()
5.包装类.type
类加载
静态
动态(反射)

类加载流程图


dmeo反射
反射获取私有属性,爆破,修改

总结:

评论