【问题标题】:Error implementing interface as anonymous inner class将接口实现为匿名内部类时出错
【发布时间】:2016-05-01 00:02:34
【问题描述】:

我正在使用 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"。但是通过观察代码,我显然是在使用匿名内部类实现功能接口。

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

【问题讨论】:

    标签: java javafx anonymous-inner-class


    【解决方案1】:

    原因是这一行:

    public class Main extends Application implements EventHandler<ActionEvent>{
    

    删除 implements EventHandler&lt;ActionEvent&gt; 就可以了。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-11
      • 1970-01-01
      • 2010-09-16
      相关资源
      最近更新 更多