分類  >  編程 >

java反射 ClassLoader 跟 Class.forName() 的區別

tags:    時間:2013-12-23 08:48:54
java反射 ClassLoader 和 Class.forName() 的區別
package fanshe;  public class Person { 	private int age; 	private String name; 	 	static { 		System.out.println("initial static block..."); 	} 	 }  package fanshe;  import java.lang.reflect.Array; import java.lang.reflect.Field; import java.lang.reflect.Method;  public class Mymain { 	 	public static void main(String[] args) throws Exception{ 		 		ClassLoader c1 = ClassLoader.getSystemClassLoader(); 		c1.loadClass("fanshe.Person"); 		System.out.println("系統載入Person類"); 		Class.forName("fanshe.Person"); 		 	} }


輸出結果:
系統載入Person類
initial static block...

原因:  ClassLoader 載入類時不會進行類的初始化, Class.forName()會強制初始化該類。

推薦閱讀文章

Bookmark the permalink ,來源:互聯網