类加载机制
Last updated
Last updated
// 具体流程可见代码
protectedsynchronized Class<?> loadClass(String paramString, boolean paramBoolean)
throws ClassNotFoundException
{
//检查是否被加载过
Class localClass =findLoadedClass(paramString);
//如果没有加载,则调用父类加载器
if (localClass == null) {
try {
//父类加载器不为空
if (this.parent != null)
localClass = this.parent.loadClass(paramString,false);
else {
//父类加载器为空,则使用启动类加载器,传统意义上启动类加载器没有父类加载器
localClass =findBootstrapClass0(paramString);
}
}
catch (ClassNotFoundExceptionlocalClassNotFoundException)
{
//如果父类加载失败,则使用自己的findClass方法进行加载
localClass = findClass(paramString);
}
}
if (paramBoolean) {
resolveClass(localClass);
}
return localClass;
}