JVM成神之路-类加载机制-双亲委派,破坏双亲委派( 六 )


运行结果:
恩,是的,我是由 class Main$MyClassLoader 加载进来的
破坏双亲委派模型
上面提到过双亲委派模型并不是一个强制性的约束模型,而是java设计者推荐给开发者的类加载器实现方式,在java的世界中大部分的类加载器都遵循这个模型,但也有例外,到目前为止,双亲委派模型主要出现过三次较大规模的“被破坏”情况 。
Class.()和.()的区别
Class.()方法,内部实际调用的方法是 Class.(,true,);
第2个参数表示类是否需要初始化,Class.()默认是需要初始化 。
一旦初始化,就会触发目标对象的 块代码执行,参数也也会被再次初始化 。
.()方法,内部实际调用的方法是 .(,false);
第2个 参数,表示目标对象是否进行链接,false表示不进行链接,由上面介绍可以,
不进行链接意味着不进行包括初始化等一些列步骤,那么静态块和静态对象就不会得到执行
参考与扩展
《深入理解Java虚拟机》
链接:Java类的加载、链接和初始化-'s Blog
链接:深度分析Java的机制(源码级别)-'s Blog
链接:双亲委派模型与自定义类加载器 -
链接:Java双亲委派模型及破坏 - CSDN博客
【JVM成神之路-类加载机制-双亲委派,破坏双亲委派】球友