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

时间:2016-05-01 00:02:35

标签: 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

    });

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

当我在handle类中构造一个空的Main方法时,代码工作正常,但我不相信我应该这样做。发生了什么事!

1 个答案:

答案 0 :(得分:5)

原因是这一行:

public class Main extends Application implements EventHandler<ActionEvent>{

删除implements EventHandler<ActionEvent>,您就可以了。

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