我的java程序中出现了一个非常奇怪的错误。 此代码未显示错误:
buttonPlay.addListener(new ClickListener(){
public void clicked(InputEvent event, float x, float y) {
/*public GameScreen(Create create) {
this.create = create;
}*/
}
});
但如果删除评论,Eclipse
会说明有两个错误:
我应该插入一个“}”来完成“public void”的方法体 点击”。
我应该删除代码的最后一个“}”。
所以“public GameScreen(Create create)
”会产生问题,Eclipse
突然不再知道块的开始和结束位置(我认为)。
我对此没有任何解释,并且会为每一个答案感到高兴。
答案 0 :(得分:6)
在注释掉的代码取消注释后,您尝试直接在方法中声明构造函数。你不能用Java做到这一点。
// You can't do this
buttonPlay.addListener(new ClickListener(){ // 1
public void clicked(InputEvent event, float x, float y) { // 2
public GameScreen(Create create) { // 3
this.create = create; // 3
} // 3
}
});
实例化匿名类。这很好。
实现该匿名类的方法(您希望在那里添加@Override
)。也没关系。
直接在另一个方法中声明构造函数。你做不到。
答案 1 :(得分:1)
public void clicked(...)
是一种方法,在其中,您正在尝试创建一个构造函数(至少这是注释代码的内容)。
构造函数是特定于类的块,不能嵌套在方法中。这就是编译失败的原因。