Class.forName与ClassLoader加载类的区别
加载类有好几种方式,今天主要说下Class.forName与ClassLoader这两种方式的区别
主要区别点:Class.forName加载会对类进行初始化(类加载总共有以下几个过程:加载->验证->准备->解析->初始化,详情可自行百度),而ClassLoader不会。
上代码,验证过程:
其中我们使用Class.forName加载,控制台打印结果:
而使用ClassLoader加载,控制台无任何打印结果。
加载类有好几种方式,今天主要说下Class.forName与ClassLoader这两种方式的区别
主要区别点:Class.forName加载会对类进行初始化(类加载总共有以下几个过程:加载->验证->准备->解析->初始化,详情可自行百度),而ClassLoader不会。
上代码,验证过程:
其中我们使用Class.forName加载,控制台打印结果:
而使用ClassLoader加载,控制台无任何打印结果。