java如何实现监听
监听器的实现方法
在Java中实现监听通常涉及使用事件监听器模式。以下是几种常见的监听实现方式:
基于接口的监听器 定义监听器接口,让需要接收事件的对象实现该接口:
public interface MyListener {
void onEventOccurred(String eventData);
}
public class EventSource {
private List<MyListener> listeners = new ArrayList<>();
public void addListener(MyListener listener) {
listeners.add(listener);
}
public void triggerEvent() {
for (MyListener listener : listeners) {
listener.onEventOccurred("Event data");
}
}
}
使用Java内置监听器 Java标准库提供了多种监听器接口,如ActionListener:
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 处理按钮点击事件
}
});
观察者模式实现
对于更复杂的监听场景,可以使用观察者模式:
public class Observable {
private List<Observer> observers = new ArrayList<>();
public void addObserver(Observer o) {
observers.add(o);
}
public void notifyObservers(Object arg) {
for (Observer o : observers) {
o.update(this, arg);
}
}
}
属性变更监听
对于Bean属性变化的监听,可以使用PropertyChangeSupport:
public class MyBean {
private PropertyChangeSupport pcs = new PropertyChangeSupport(this);
private String value;
public void addPropertyChangeListener(PropertyChangeListener listener) {
pcs.addPropertyChangeListener(listener);
}
public void setValue(String newValue) {
String oldValue = this.value;
this.value = newValue;
pcs.firePropertyChange("value", oldValue, newValue);
}
}
注解驱动的监听
在Spring等框架中可以使用注解实现事件监听:
@EventListener
public void handleCustomEvent(CustomEvent event) {
// 处理自定义事件
}
每种方法适用于不同场景,接口方式适合简单自定义事件,观察者模式适合复杂订阅关系,内置监听器适合GUI开发,属性监听适合数据绑定场景,注解方式适合Spring应用。







