我有后续代码: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