有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如果在类初始化期间调用重写的基方法,则java实例字段不会初始化

有一个基类ServerAdapter

public abstract class ServerAdapter {
    public ServerAdapter() {
        initGUI();
    }

    protected abstract void initGUI();
}

以及继承ServerAdapter的子类:

public abstract class LinuxServerAdapter extends ServerAdapter {
    protected CheckBox key = new CheckBox();

    public LinuxServerAdapter() {
        super();
    }

    @Override
    public void initGUI() {
        //NPE is thrown here, because key = null
        key.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                //Something happens here
            }
        });
    }
}

继承LinuxServerAdapter的最终类:

public class MyLinuxServerAdapter extends LinuxServerAdapter {

    public MyLinuxServerAdapter() {
        super();
    }

    public static void main(String args[]) {
        ServerAdapter server = new MyLinuxServerAdapter();
    }
}

当我尝试在键上添加clickHandler时,会抛出NPE

为什么key没有初始化?在这种情况下,初始化顺序是否以特定方式工作


共 (0) 个答案