Java中的事件侦听器和处理程序之间有什么区别?

2022-08-31 11:44:57

一般来说,Java有事件的侦听器和处理程序。
我的意思是我不知不觉地使用它们,只是API中可用的任何一个。

我的问题是,在什么情况下我们使用侦听器,在什么情况下我们对事件使用处理程序?

它们之间有什么区别?特性??

我已经搜索了原因,但我找不到Java的正确解释。


答案 1

侦听器和处理程序之间没有正式定义的区别。有些人可能会争辩说它们是可以互换的。然而,对我来说,它们的含义略有不同。

侦听器是订阅来自源的事件的对象。参见观察者模式。通常,您可以让许多侦听器订阅每种类型的事件,并通过方法添加它们。addXyzListener

例:Java API 中的 MouseListener

处理程序是负责处理某些事件的对象。典型的方案是为特定事件/任务提供处理程序作为构造函数的参数,或通过方法设置处理程序。换句话说,对于每种类型的事件,通常都有一个处理程序。setXyzHandler

例:Java API 中的 MemoryHandler


答案 2

最基本的区别是关联

  • 侦听器与事件源关联(例如:键盘)
  • 处理程序与事件相关联(例如:键按下)

一般来说,只有一个中央处理程序管理器来管理所有事件,而在监听器的情况下,每个想要监听的实体都必须管理自己的监听器集合。