作为一名暴躁的00后
直接上代码
import java.util.EventObject;
// 1. 定义事件
class MyEvent extends EventObject {
public MyEvent(Object source) {
super(source);
}
}
// 2. 定义事件监听器接口
interface MyEventListener {
void onEventOccurred(MyEvent event);
}
// 3. 创建事件生成器
class EventGenerator {
private MyEventListener listener;
// 添加事件监听器
public void addEventListener(MyEventListener listener) {
this.listener = listener;
}
// 移除事件监听器
public void removeEventListener() {
this.listener = null;
}
// 触发事件
public void triggerEvent() {
if (listener != null) {
MyEvent event = new MyEvent(this);
listener.onEventOccurred(event);
}
}
}
// 4. 实现事件监听器
class CustomEventListener implements MyEventListener {
@Override
public void onEventOccurred(MyEvent event) {
System.out.println("事件发生: " + event.getSource());
}
}
// 5. 测试类
public class Main {
public static void main(String[] args) {
// 创建事件生成器
EventGenerator generator = new EventGenerator();
// 创建并注册事件监听器
CustomEventListener listener = new CustomEventListener();
generator.addEventListener(listener);
// 触发事件
generator.triggerEvent();
// 移除事件监听器
generator.removeEventListener();
}
}
运行上述代码,当事件触发时,您将看到以下输出:
复制代码
事件发生: EventGenerator@xxxxxxx
在此示例中,我们只保留了一个事件监听器的引用。因此,对于每个EventGenerator
实例,只能有一个事件监听器。如果需要支持多个事件监听器,可以将listener
变量更改为List<MyEventListener>
类型,并相应地更新addEventListener
和removeEventListener
方法。