java如何监听
监听事件的实现方式
在Java中,监听通常通过事件监听器(EventListener)实现。常见场景包括GUI事件(如按钮点击)、自定义事件或系统级监听(如文件变化)。以下是几种典型实现方法:
GUI事件监听(Swing/AWT)
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("按钮被点击");
}
});
Lambda表达式简化写法:
button.addActionListener(e -> System.out.println("按钮被点击"));
自定义事件监听
-
定义监听接口
public interface CustomListener { void onEvent(String eventData); } -
实现监听器管理
public class EventEmitter { private List<CustomListener> listeners = new ArrayList<>(); public void addListener(CustomListener listener) { listeners.add(listener); } public void emitEvent(String data) { for (CustomListener listener : listeners) { listener.onEvent(data); } } }
文件系统监听(Java NIO)
Path path = Paths.get("/path/to/directory");
WatchService watchService = FileSystems.getDefault().newWatchService();
path.register(watchService,
StandardWatchEventKinds.ENTRY_CREATE,
StandardWatchEventKinds.ENTRY_DELETE,
StandardWatchEventKinds.ENTRY_MODIFY);
while (true) {
WatchKey key = watchService.take();
for (WatchEvent<?> event : key.pollEvents()) {
System.out.println("事件类型: " + event.kind() + " 文件: " + event.context());
}
key.reset();
}
网络端口监听(ServerSocket)
try (ServerSocket serverSocket = new ServerSocket(8080)) {
while (true) {
Socket clientSocket = serverSocket.accept();
new Thread(() -> {
// 处理客户端请求
}).start();
}
}
Spring框架的事件监听
-
定义事件类
public class CustomEvent extends ApplicationEvent { public CustomEvent(Object source) { super(source); } } -
发布事件
@Autowired private ApplicationEventPublisher eventPublisher;
eventPublisher.publishEvent(new CustomEvent(this));

3. 监听事件
```java
@EventListener
public void handleEvent(CustomEvent event) {
// 处理事件逻辑
}
观察者模式实现
public class Subject {
private List<Observer> observers = new ArrayList<>();
public void addObserver(Observer o) {
observers.add(o);
}
public void notifyObservers(String message) {
for (Observer o : observers) {
o.update(message);
}
}
}
public interface Observer {
void update(String message);
}
根据具体需求选择适合的监听方式,GUI开发优先使用内置监听器,系统级监控考虑NIO或WatchService,Spring应用可使用框架自带的事件机制。






