1. 程式人生 > >java 類動態載入 / static 語句塊載入一次

java 類動態載入 / static 語句塊載入一次

jaav 類動態載入,static 語句塊載入一次

package test.java;
/**
 * 
 * @author lj
 * @printout 
 *  [Loaded test.java.A from file:/D:/Users/workspaceReal1/ptservice/build/classes/]
	----------------------
	[Loaded test.java.B from file:/D:/Users/workspaceReal1/ptservice/build/classes/]
	[Loaded test.java.C from file:/D:/Users/workspaceReal1/ptservice/build/classes/]
	static of CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
	[Loaded test.java.D from file:/D:/Users/workspaceReal1/ptservice/build/classes/]
	dynamic of DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
	dynamic of DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
 */
public class TestDynamicLoading {

	public static void main(String[] args) {
		new A();//詳細輸出 -verbose:class,這個是動態載入。先載入A,再列印,第三句才載入B類。即classLoader 是用到的時候才動態載入類
		System.out.println("----------------------");
		new B();
		
		new C();
		new C();
		
		new D(1);
		new D(2);
	}

}
class A{
	
}
class B{
	
}

class C{
	static {     //靜態語句塊,在載入類的時候載入,並且只被載入一次
		System.out.println("static of CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC");
	}
}

class D{
	public D(int i){}
	
	{     //動態語句塊,在每次new 物件的時候呼叫,用的不多。這個與構造方法區別不大,僅當構造方法有引數時,才發現,這個無條件加在每個構造方法前面
		System.out.println("dynamic of DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD");
	}
}