加载类有好几种方式,今天主要说下Class.forName与ClassLoader这两种方式的区别

主要区别点:Class.forName加载会对类进行初始化(类加载总共有以下几个过程:加载->验证->准备->解析->初始化,详情可自行百度),而ClassLoader不会。

上代码,验证过程:

Class.forName与ClassLoader加载类的区别

Class.forName与ClassLoader加载类的区别

其中我们使用Class.forName加载,控制台打印结果:

Class.forName与ClassLoader加载类的区别

而使用ClassLoader加载,控制台无任何打印结果。

相关文章: