我有這段代碼,編譯器的返回值爲NullPointerException,我嘗試創建BtnAct。我已經閱讀了很多關於初始化的內容,但仍然沒有看到內部類初始化的順序。有人可以幫忙嗎?嵌套類的初始化順序
public class BaseClass{
static Myclass myClass;
public static void main(){
myClass = new MyClass;
}
}
class MyClass{
NewClass newClass;
public MyClass(){
newClass = new NewClass();
}
class BtnActn extends AbstractAction {
BtnActn() {
super("Button");
}
@Override
public void actionPerformed(ActionEvent e) {
//blabla
}
}
}
class NewClass{
JButton button;
public NewClass(){
button = new JButton(BaseClass.myClass.new BtnActn()); //NullPointer.ex here
}
}
當你調用嵌套實例類構造函數時,我猜'BaseClass'的靜態字段'myClass'是'null'。 – Mena 2014-09-01 12:16:42
什麼是'BaseClass',我認爲myClass應該是'static'。當您嘗試使用調試器來調試程序時,您會看到什麼? – 2014-09-01 12:27:02
myClass是靜態的。可能Mena所說的是這種情況,有沒有辦法告訴初始化方法在某個級別停止,並讓BaseClass中的值分配首先發生? – 2014-09-01 12:28:01