student定义sleep方法
用反射+配置文件
定义配置文件
src下new file。新建
加载配置文件。Properties里面有一个load方法,可以加载.properties结尾的配置文件 加载到内存中
获取字节码文件对应的类的加载器,用这个类加载器加载到内存
这样就有了ClassLoader
ClassLoader下面以偶getResource的方法是获取资源的路径
getResourceAsStream获取资源对应的字节流
这样就返回了字节流
把字节流传到load方法里面,就完成了加载了。
再抛出异常
抛出IO异常
获取配置文件中定义的数据
获取到要加载的全类名,以及要加载的方法的方法名
反射
根据全类名返回一个class对象
创建对象 newInstance()
获取方法对象,暂时任务是 无参的
invoke执行方法
运行程序
现在配置的Person类的eat方法
修改配置文件 Student的sleep的方法
这就是框架的基本内部原理
最终目录结构