

student定义sleep方法




用反射+配置文件

定义配置文件

src下new file。新建




加载配置文件。Properties里面有一个load方法,可以加载.properties结尾的配置文件 加载到内存中


获取字节码文件对应的类的加载器,用这个类加载器加载到内存

这样就有了ClassLoader

ClassLoader下面以偶getResource的方法是获取资源的路径

getResourceAsStream获取资源对应的字节流

这样就返回了字节流

把字节流传到load方法里面,就完成了加载了。
再抛出异常

抛出IO异常

获取配置文件中定义的数据
获取到要加载的全类名,以及要加载的方法的方法名

反射
根据全类名返回一个class对象

创建对象 newInstance()

获取方法对象,暂时任务是 无参的

invoke执行方法

运行程序
现在配置的Person类的eat方法


修改配置文件 Student的sleep的方法


这就是框架的基本内部原理
最终目录结构
