loadClass 与 Class.forName 异同

定义一个Student类:

public class Student {
	
	static{
		
		System.out.println("执行Student的静态初始化块");
	}
}

测试类:

public class Test {

	public static void main(String[] args) throws Exception {
		 
		System.out.println("-----加载类Student----");
		ClassLoader loder = ClassLoader.getSystemClassLoader();
		loder.loadClass("Student");
		
		System.out.println("-----加载并初始化类Student----");
		Class.forName("Student");
	}
}

输出结果:

-----加载类Student----
-----加载并初始化类Student----
执行Student的静态初始化块

结论:

当使用ClassLoader类的loadClass()加载某个类时,该方法只是加载该类,并不会初始化该类,而Class.forName()会执行初始化操作。

猜你喜欢

转载自huangqiqing123.iteye.com/blog/1405619