我有以下代码:http://aiids.pastebin.com/aLGYjraC
问题出在第84行,它在programmaBesteller上给了我一个NullPointerException。当我调试时,每个私有成员(JMenu和JMenuItem)都为null:s。
我没有看到问题因为我新的DefaultMenuBar() ......
答案 0 :(得分:5)
从超类构造函数调用 buildMenuProgramma 方法?那些字段尚未在该阶段实例化。
答案 1 :(得分:1)
以下是一些代码,我认为这些代码可以证明您遇到的问题:
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: java.lang.Object@1fee6fc
即,显式初始化并且看起来不能x
的字段null
在超类构造函数时实际上并未初始化。希望能让它更清晰。