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

Error implementing interface as 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

    });

我收到错误消息 "Class must either be declared abstract or implement abstract method"。但是通过观察代码,我清楚地使用匿名内部 class.

实现功能接口

当我在 Main class 中构造一个空的 handle 方法时,代码工作正常,但我认为我不应该这样做。怎么回事!

原因是这一行:

public class Main extends Application implements EventHandler<ActionEvent>{

去掉 implements EventHandler<ActionEvent> 就好了。

您可能感到困惑,因为您让 Main class 都实现了接口,并且您正在创建一个也实现接口的匿名内部 class。这给您留下了一个 class 实现了该方法——匿名内部 class。但是外面的Main class 还没有实现这个方法,这就是你得到错误信息的原因。