我正在使用Intellij IDEA学习JavaFX。编译以下代码时:
public class Main extends Application implements EventHandler<ActionEvent>{
//More code
button.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("Hello World");
}
//More code
});
我收到错误消息"Class must either be declared abstract or implement abstract method"
。但是通过观察代码,我显然是使用匿名内部类来实现功能接口。
当我在handle
类中构造一个空的Main
方法时,代码工作正常,但我不相信我应该这样做。发生了什么事!
答案 0 :(得分:5)
原因是这一行:
public class Main extends Application implements EventHandler<ActionEvent>{
删除implements EventHandler<ActionEvent>
,您就可以了。
您可能感到困惑,因为您已经使Main
类实现了接口,并且您正在创建一个也实现接口的匿名内部类。这将为您提供一个已实现该方法的类 - 匿名内部类。但外部Main
类尚未实现该方法,这就是您收到错误消息的原因。