将接口实现为匿名内部类时出错

Hay*_*dos 2 java javafx anonymous-inner-class

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

    });
Run Code Online (Sandbox Code Playgroud)

我收到错误消息"Class must either be declared abstract or implement abstract method".但通过观察代码,我显然是使用匿名内部类实现功能接口.

当我handleMain类中构造一个空方法时,代码工作正常,但我不相信我应该这样做.到底是怎么回事!

Sim*_*erg 5

原因是这一行:

public class Main extends Application implements EventHandler<ActionEvent>{
Run Code Online (Sandbox Code Playgroud)

删除implements EventHandler<ActionEvent>你,你很好.

您可能感到困惑,因为您已经使您的Main类实现了接口,并且您正在创建一个也实现接口的匿名内部类.这将为您提供一个已实现该方法的类 - 匿名内部类.但外部Main类没有实现该方法,这就是您收到错误消息的原因.