您的位置:首页 > 其它

JVM-2-loadClass(*)与Class.forName(*)

2015-04-09 21:16 375 查看
一、主要内容
loadClass(*)不会导致类初始化,只是类被加载;
Class.forName(*)才会导致类被初始化。

二、代码

package jvm.demo1;

public class Test3 {

public static void main(String[] args) throws ClassNotFoundException {
ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
Class<?> clazz2 = systemClassLoader.loadClass("jvm.demo1.T");
System.out.println("clazz2: " + clazz2);
ClassLoader classLoader2 = clazz2.getClassLoader();
System.out.println("classLoader2: " + classLoader2);

System.out.println("--------------------------");

Class<?> clazz = Class.forName("jvm.demo1.T"); // T类会被初始化
System.out.println("clazz: " + clazz);
ClassLoader classLoader = clazz.getClassLoader();
System.out.println("classLoader: " + classLoader);
}
}

class T {
static {
System.out.println("打印这句话,说明T类被初始化了...");
}
}
程序输出

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: