java - 将接口(interface)实现为匿名内部类时出错

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

    });

我收到错误消息“类必须声明为抽象或实现抽象方法”。但通过观察代码,我清楚地使用匿名内部类来实现函数接口(interface)。

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

最佳答案

原因是这一行:

public class Main extends Application implements EventHandler<ActionEvent>{

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

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

关于java - 将接口(interface)实现为匿名内部类时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36961573/

相关文章:

java - JavaFx 中的 CubicCurve 和 CubicCurveTo

java - MySQL 还是 Derby ?在线java聊天服务器?

java - 可运行内联类声明 - 能够访问外部非最终变量

java - 如何在 Java 中将对象数组写入文件?

java - Proguard 使我的 RemoteController compat 实现在 API<19 设备上崩溃

JavaFX 响应式 TableView

c++ - 在 protected 匿名 union 中的匿名结构中定义的成员仍然公开可见

java - 匿名内部类内部方法

java - Jersey 的 ServletContainer init 方法可以被重写吗?

java - 如何设置复杂的 Java 开发基础架构?