"第一步:类加载器"
A类加载器
1.引导类加载器<使用C++编写的>:加载系统类,从rt.jar包中寻找类,引导类加载器没有对应的classLoader对象,如 String.class.getClassLoader()返回null
2.扩展类加载器:从jre/lib/ext内寻找类
3.系统类加载器:从classpath路径寻找类
当上父类加载器无法加载时,子类加载器才会执行加载
class.forName()方法使用的是系统类加载器
B自定义类加载器
1.继承ClassLoader类
2.重写findClasss(String name)方法,
需要实现"从本地读取class文件","调用defineClass方法生成字节码"
"第二步:字节码校验"
防止被class文件被修改过
"第三步:安全管理器"
权限管理:是否能访问本地资源等
|
|