我正在使用java我。我嘗試在First.java中的另一個displayble(form1)中的okCommand中切換到Second.java中的可顯示錶單(form2)(請參閱我的previous question)。非靜態變量不能從靜態上下文中引用
我得到了一個錯誤non-static method getForm2() cannot be referenced from a static context
。我必須在form2聲明中添加static這個詞,並且在Second.java中的getForm2方法中添加它。
現在的問題是,form2中的backCommand無法切換回First.java中的form1並彈出錯誤non-static variable this cannot be referenced from a static context
。
我停了下來,花了一些時間來刷新自己對static關鍵字是如何使用的語言基礎,我認識了一個靜態方法是一個類方法和非靜態方法的實例方法和一個除非創建了非靜態方法的實例,並且靜態方法不能調用非靜態方法,否則非靜態方法不能調用靜態方法。
我真的不理解實施,因爲我應該,我會很感激一些澄清使用我上面的例子。
下面是從Second.java下面的源錯誤是來自form2.setCommandListener(this);
public static Form getForm2() {
if (form2 == null) {
form2 = new Form("form");
form2.addCommand(getBackCommand());
form2.setCommandListener(this);
}
return form2;
如果您收到此錯誤 - 「非靜態方法getForm2()不能從靜態上下文中引用「 - 你可以粘貼實際上試圖調用」getForm2「的代碼嗎? – djhayman
這是代碼。但我通過在聲明中添加static關鍵字和在Second中添加getForm2方法來解決此問題。的java 公共無效的commandAction(命令命令,可顯示可顯示){ 是否(可顯示== Form1中){ IF(命令== exitCommand){ exitMIDlet(); else if(command == okCommand){ switchDisplayable(null,Second.getForm2()); } } } – degee