私はjavameを使用しています。First.javaの別のdisplayble(form1)のokCommandからSecond.javaのdisplayable(form2)に切り替えようとしました(これに関する以前の質問を参照してください)。
エラーが発生しましnon-static method getForm2() cannot be referenced from a static context
た。動作する前に、form2宣言とSecond.javaのgetForm2メソッドにstaticという単語を追加する必要がありました。
ここでの問題は、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;