使用类加载器和Class.forName来获取class的时候,是否进行了初始化?

使用类加载器和Class.forName来获取class的时候,是否进行了初始化?

实际上使用类加载器来加载class的时候,只是加载该类,没有初始化,但是Class.forName就初始化了的

如果初始化一个类,首先是运行里面的静态代码

测试代码如下:

package classLoader;


class A{
	public A(){
		System.out.println("创建类的时候运行这段代码");
	}
	static{
		System.out.println("这里是类静态代码块,初始化类的时候就会运行一次");
	}
}

public class ClassLoaderT {
public static void main(String[] args) throws ClassNotFoundException {
	//首先是获得类加载器
	ClassLoader cl=ClassLoader.getSystemClassLoader();
	cl.loadClass("classLoader.A");//这里根据全类名来查找这个类,所以如果只是输入"A"就会报错。
	System.out.println("-----------------------------");
	Class.forName("classLoader.A");////这里根据全类名来查找这个类,所以如果只是输入"A"就会报错。
}
}

控制台:

使用类加载器和Class.forName来获取class的时候,是否进行了初始化?_第1张图片

你可能感兴趣的:(#,javase)