gpt4 book ai didi

java - 为什么 AWT EventListener 会在方法和事件本身中重复事件信息

转载 作者:行者123 更新时间:2023-12-02 11:44:17 24 4
gpt4 key购买 nike

在许多标准 Java 库(尤其是 AWT/Swing)中,您可以找到以下事件监听器/事件模式:

 interface FooEventListener {
void fooDidBar(FooEvent e);
void fooDidBaz(FooEvent e);
void fooDidQux(FooEvent e);
}

并且,在 FooEvent 中,您进一步发现

 public class FooEvent {
static int FOO_DID_BAR = 1;
static int FOO_DID_BAZ = 2;
static int FOO_DID_QUX = 3;
// ...
public int getID(); // one of the above constants
}

这似乎是多余的。为什么做出这个决定?在调用的特定方法和作为该方法的参数传递的事件中都包含此信息有什么好处?

示例:

最佳答案

我认为原因是:

1) 所有 AWT/Swing 事件都扩展 AWTEvent 并且需要向其父构造函数提供事件 id。正如 @MadProgrammer 所提到的,这在一定程度上是旧版 AWT 代码库和事件分派(dispatch)所必需的。

2) 在监听器中实现一个特定的回调方法而不是在单个方法中检查事件 id 常量是一种更简洁的设计。实际上,在过去,我们只是根据事件 id 从单个事件回调方法中委托(delegate)给私有(private)方法。

3) 这允许使用适配器类,帮助仅为感兴趣的事件实现回调方法。

关于java - 为什么 AWT EventListener 会在方法和事件本身中重复事件信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48311652/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com