構造代碼塊
直接在類中定義且沒有加static關鍵字的代碼塊稱爲{}構造代碼塊。
構造代碼塊在創建對象時被調用,每次創建對象都會被調用,並且構造代碼塊的執行次序優先於類構造函數。
public class Client {
{//構造代碼塊
System.out.println("執行構造代碼塊");
}
public Client() {
System.out.println("執行無參構造函數");
}
public Client(String string) {
System.out.println("執行有參構造函數");
}
}
相當於
public class Client {
public Client() {
System.out.println("執行構造代碼塊");
System.out.println("執行無參構造函數");
}
public Client(String string) {
System.out.println("執行構造代碼塊");
System.out.println("執行有參構造函數");
}
}
使用示例:使用匿名類的構造代碼塊
List l2 = new ArrayList(){}; //定義了一個繼承於ArrayList的匿名類,只是沒有任何的覆寫方法而已
ArrayList<String> lst = new ArrayList<String>() {
{
add(new String("aaa"));
add(new String("bbb"));
add(new String("ccc"));
}
}; //定義了一個繼承於ArrayList的匿名類,並且包含一個初始化構造代碼塊