在上一篇提到我在工作上遇到了個需要用 EL 來取得 Java Class 裡面的常數的問題,並提供了我找到的幾個解決方法。
後來在經過一番 Trace 過後,發現了原來我們的專案已經使用了第一個方法,而第一個方法(在 JSTL 中取用 Java constants)裡面呢…限制了只有宣告成 final 的constants才會被放進map...
在與同事描述了這個結論時,發現了我們只是繼承 JSTL 並沒有去呼叫 JSTLConstants 的 constructor ,為什麼會去執行上面的程式碼呢?
於是我們猜想會不會是 java 幫我們做了 super() 這件事…
測試: 子類別 public static void main(String[] args) { 執行子類別的結果: 果然自動執行了父類別的 constructor ...XDDDD
父類別
public class TestParent { public TestParent() {
System.out.println("parent...start"); System.out.println("parent...end");
}
}
public class TestChild extends TestParent {
public TestChild() {
System.out.println("child...start");
System.out.println("child...end");
}
new TestChild();
}
}
parent...start
parent...end
child...start
child...end
沒有留言:
張貼留言