03双亲委派机制
目录
加载一个 Class 类的顺序也是有优先级的,类加载器从最底层开始往上的顺序是这样的
BootStrap ClassLoader:rt.jar
Extension ClassLoader: 加载扩展的 jar 包
App ClassLoader:指定的 classpath 下面的 jar 包
Custom ClassLoader:自定义的类加载器
当一个类收到了加载请求时,它是不会先自己去尝试加载的,而是委派给父类去完成,比如我现在要 new 一个 Person,这个 Person 是我们自定义的类,如果我们要加载它,就会先委派 App ClassLoader ,只有当父类加载器都反馈自己无法完成这个请求(也就是父类加载器都没有找到加载所需的 Class)时,子类加载器才会自行尝试加载。
这样做的好处是,加载位于 rt.jar 包中的类时不管是哪个加载器加载,最终都会委托到 BootStrap ClassLoader 进行加载,这样保证了使用不同的类加载器得到的都是同一个结果。
其实这个也是一个隔离的作用,避免了我们的代码影响了 JDK 的代码。
