JVM-2-loadClass(*)与Class.forName(*)
2015-04-09 21:16
375 查看
一、主要内容
loadClass(*)不会导致类初始化,只是类被加载;
Class.forName(*)才会导致类被初始化。
二、代码
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类被初始化了..."); } }程序输出
相关文章推荐
- Java中class是如何加载到JVM中的(Class.forName(&quot;name&quot;)和ClassLoader.loadClass(&quot;name&quot;)的区别)
- Java中class是如何加载到JVM中的(Class.forName("name")和ClassLoader.loadClass("name")的区别)
- JVM虚拟机加载类到内存的ClassLoader.loadClass && Class.forName()的比较
- Class.forName() 和 ClassLoader.loadClass()的区别?
- java中用loadClass加载类和用forName初始化类参数要用全类名(加上包路径)
- 关于 forName 和 loadClass
- Class.forName() 和 ClassLoader.loadClass()的区别
- Class.forName和ClassLoader.loadClass的比较
- (转)classload和class.forname()区别
- java两种反射的区别 - Class.forName()和ClassLoader.loadClass()
- ClassLoader.loadClass()与Class.forName()的区别
- Class.forName()与load.loadClass()比较
- Class.forName()和ClassLoader.loadClass()区别2
- 反射中Class.forName()和ClassLoader.loadClass()的区别
- Class.forName()与ClassLoader.loadClass()的区别
- Java中的Loadclass和Class.forName的区别
- Class.forName() 和 ClassLoader.loadClass()的区别?
- 深入类别载入器 forName() loadClass()
- Java类加载一:Class.forName()和ClassLoader.getSystemClassLoader().loadClass()区别
- ClassLoader.loadClass和Class.forName的区别