直接上源码:
1 package reflex; 2 3 public class Dog { 4 static{ 5 System.out.println("加载静态模块"); 6 } 7 public Dog(){ 8 System.out.println("执行构造方法"); 9 } 10 }
1 package reflex; 2 3 import org.junit.Test; 4 /** 5 *三种类的加载方法区别 6 *1.Class.forName("类名"):加载类,并静态初始化; 7 *2.通过关键字new :加载类,并静态初始化,执行构造方法 8 *3.类名.class:只加载类,不做静态初始化。 9 */ 10 public class DogReflex { 11 @Test 12 /** 13 * 打印结果:加载静态模块 14 */ 15 public void test1() throws Exception{ 16 Class clazz = Class.forName("reflex.Dog"); 17 } 18 @Test 19 /** 20 * 打印结果:加载静态模块 21 * 执行构造方法 22 */ 23 public void test2(){ 24 Class Clazz = new Dog().getClass(); 25 } 26 @Test 27 /** 28 *无打印结果 29 */ 30 public void test3() throws Exception{ 31 Class clazz = Dog.class; 32 } 33 }
原文:http://www.cnblogs.com/miyin/p/4007182.html