首页 > 代码库 > 反射(2)—3种类加载方法的区别

反射(2)—3种类加载方法的区别

直接上源码:

 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     @Test12     /**13      * 打印结果:加载静态模块14      */15     public void test1() throws Exception{16         Class clazz = Class.forName("reflex.Dog");17     }18     @Test19     /**20      * 打印结果:加载静态模块21      *             执行构造方法22      */23     public void test2(){24         Class Clazz = new Dog().getClass();25     }26     @Test27     /**28      *无打印结果 29      */30     public void test3() throws Exception{31         Class clazz = Dog.class;32     }33 }

 

反射(2)—3种类加载方法的区别