這裏是我的代碼段我'正與初始化塊的信心初始化塊與延伸
class Father{
Father() {
System.out.println("Father constructor runs...");
}
static {System.out.println("static init block of Father...");}
{System.out.println("instance init block of Father...");}
}
class Child extends Father {
Child() {
System.out.println("Child constructor runs...");
}
static {System.out.println("static init block of Child ...");}
{System.out.println("instance init block of Child ...");}
public static void main (String[] argv) {
new Child();
}
}
這兩個類被編譯成一個單一的類文件:Child.class 我跑它的命令行Java兒童
這是我的輸出中:
static init block of Father...
static init block of Child ...
static init block of Child ...
instance init block of Father...
Father constructor runs...
instance init block of Child ...
Child constructor runs...
對於這個輸出我很好,除了「靜態初始化子塊...」被打印兩次。從java文檔我讀「靜態初始化塊運行一次,當第一次加載類」。
那麼這是否意味着我的類Child被加載兩次?
任何幫助表示讚賞 感謝 阿爾貝託
我試過這個,'Child的靜態初始塊'只打印一次(使用OpenJDK Runtime Environment(IcedTea6 1.9.13)(6b20-1.9.13-0ubuntu1〜10.10.1))。你確定你用這段代碼得到了兩次消息嗎? – esaj 2012-03-24 10:28:19