我正在使用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