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