Java 接口类混淆

Java 接口类混淆,java,android,javafx,Java,Android,Javafx,在接口中,该方法不包含实现。 那么为什么ActionListener接口提供了所有的操作工具,而ActionListener方法中的方法没有实现呢。 所以它如何提供方法的功能。比如setOnClickListener等等。 我很困惑。请帮我定义类应该提供的功能。例如,Runnable接口有一个方法run,任何实现Runnable的类中都应该有一个名为run的方法。这同样适用于ActionListener 我不太熟悉这个接口,但我将使用JavaFX(一个JavaGUI库)中的一个示例 Button

在接口中,该方法不包含实现。 那么为什么ActionListener接口提供了所有的操作工具,而ActionListener方法中的方法没有实现呢。 所以它如何提供方法的功能。比如setOnClickListener等等。
我很困惑。请帮我定义类应该提供的功能。例如,Runnable接口有一个方法run,任何实现Runnable的类中都应该有一个名为run的方法。这同样适用于ActionListener

我不太熟悉这个接口,但我将使用JavaFX(一个JavaGUI库)中的一个示例

Button类有一个方法setOnActionEventHandler,用于设置按下按钮时发生的操作。EventHandler是一个接口,服务器的用途与ActionListener类似。它有一种方法:void handleActionEvent事件

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

在一个单独的.java文件中创建一个新类,实现接口并重写句柄 创建匿名内部类,并重写其中的方法。 使用lambda/方法引用Java8,编译器将其视为匿名内部类
通过需要一个实现EventHandler的类,按钮知道可以调用handleActionEvent事件方法。这就是接口的全部功能。这只是一种承诺,即特定的方法将存在。如果您未能遵守这一承诺,即不重写该方法,编译器将失败,您将无法运行代码。

您需要在代码中使用它。如果说这就是接口所做的一切,这有点不公平,它还允许您进行一些抽象/继承;可以使用接口而不是派生类型等。但这是一个可靠的答案,will upvote,花时间帮助他人做得很好:是的,事后看来,答案听起来确实有点简化,无论如何感谢upvote: