我有後續代碼:http://aiids.pastebin.com/aLGYjraC我班的私有財產是空
的問題是在線84它給了我在programmaBesteller一個NullPointerException。當我調試時,每個私有成員(JMenu和JMenuItem)都是null:s。
我沒有看到這個問題,因爲我做新DefaultMenuBar() ...
我有後續代碼:http://aiids.pastebin.com/aLGYjraC我班的私有財產是空
的問題是在線84它給了我在programmaBesteller一個NullPointerException。當我調試時,每個私有成員(JMenu和JMenuItem)都是null:s。
我沒有看到這個問題,因爲我做新DefaultMenuBar() ...
下面是一些代碼,我想證明你所遇到的問題:
public abstract class Super {
public static void main(String[] args) {
new Sub();
}
public Super() {
printMe();
}
abstract void printMe();
private static class Sub extends Super {
private final Object x = new Object();
public Sub() {
super();
printMe();
}
@Override
protected void printMe() {
System.out.println("printMe: " + x);
}
}
}
輸出是:
printMe: null
printMe: [email protected]
即場x
,這是明確的初始化,看起來不可能是null
實際上在超類構造函數時沒有初始化。希望更清楚。
也許buildMenuProgramma方法是從父類的構造叫什麼名字?這些字段尚未在該階段實例化。
我調用build()方法,該方法調用像buildMenuProgramma這樣的抽象方法。 – 2011-03-01 19:11:43
你的粘貼代碼中沒有方法build()。除非在'super()'中調用'buildMenuProgramma',否則我看不到這些字段爲空的解釋。我們需要查看超類代碼以獲得更多幫助。 – 2011-03-01 19:19:11
據我所知,'build()'方法實際上是從超類的構造函數調用的。如果是這樣,您可以簡單地創建另一個抽象方法來實例化所有私有成員,並在所有其他成員之前調用它。 – n0weak 2011-03-01 19:24:17
聽起來很奇怪。它在創建這個對象時是否有任何異常? – 2011-03-01 18:47:11
否:s他會像他應該那樣調用構造函數,但是當我檢查對象時,所有私有成員都是null。 – 2011-03-01 18:57:38
從哪裏調用'buildMenuProgramma'?超類?如果是這樣,那就是你的問題。 – justkt 2011-03-01 19:01:44