首页 > 解决方案 > 接口类混淆

问题描述

在接口中,方法不包含实现。那么为什么ActionListener接口提供了Action的所有功能,而ActionListener方法中的方法却没有实现。那么它如何提供方法的功能。像 setOnClickListener 等。我很困惑。请帮助我

标签: javaandroidjavafx

解决方案


接口定义了类应该提供的功能。例如,Runnable接口有一个方法,run(),任何实现的类都Runnable应该有一个名为 的方法run()。这同样适用于ActionListener

我对这个界面并不特别熟悉,但我将使用 JavaFX(一个 Java GUI 库)中的一个示例。

该类Button有一个方法setOnAction(EventHandler<ActionEvent> handler),它设置按下该按钮时发生的操作。EventHandler<ActionEvent>是一个接口,和 server 的目的类似ActionListener。它有一种方法:void handle(ActionEvent event);

作为程序员,我的工作是提供一个实现 的类EventHandler<ActionEvent>,以便按钮知道按下时要调用什么方法。我可以通过以下方式做到这一点:

  • 在单独的 .java 文件中创建一个新类,实现接口并覆盖handle()
  • 创建一个匿名内部类,并覆盖那里的方法。
  • 使用 lambda/方法引用 (Java 8),编译器将其视为匿名内部类

通过要求实现 的类EventHandler<ActionEvent>,按钮知道将有一个handle(ActionEvent event)方法可供调用。这就是界面所做的一切。这只是一个特定方法/方法将存在的承诺。如果您未能遵守此承诺(即您不重写该方法),编译器将失败并且您将无法运行您的代码。


推荐阅读