在Java中,java.util.EventListener
是一个标记接口,用于表示一个对象可以接收事件并处理它。通常,它与具体的事件监听器接口一起使用,这些接口继承自 EventListener
并定义了具体的事件处理方法。
以下是一个非界面相关的例子,我们将创建一个简单的温度监控系统。这个系统将有一个 TemperatureSensor
类,它可以在温度变化时通知监听器。我们还会定义一个 TemperatureListener
接口,它继承自 EventListener
。
import java.util.EventListener;
import java.util.ArrayList;
import java.util.List;
// 定义事件监听器接口
interface TemperatureListener extends EventListener {
void temperatureChanged(TemperatureEvent event);
}
// 定义事件类
class TemperatureEvent {
private final double temperature;
public TemperatureEvent(double temperature) {
this.temperature = temperature;
}
public double getTemperature() {
return temperature;
}
}
// 定义事件源
class TemperatureSensor {
private double temperature;
private final List<TemperatureListener> listeners = new ArrayList<>();
public void addTemperatureListener(TemperatureListener listener) {
listeners.add(listener);
}
public void removeTemperatureListener(TemperatureListener listener) {
listeners.remove(listener);
}
public void setTemperature(double temperature) {
this.temperature = temperature;
// 当温度改变时,通知所有监听器
for (TemperatureListener listener : listeners) {
listener.temperatureChanged(new TemperatureEvent(temperature));
}
}
}
// 实现事件监听器
class TemperatureLogger implements TemperatureListener {
@Override
public void temperatureChanged(TemperatureEvent event) {
System.out.println("Temperature changed to " + event.getTemperature() + " degrees Celsius.");
}
}
// 主类
public class TemperatureMonitor {
public static void main(String[] args) {
TemperatureSensor sensor = new TemperatureSensor();
// 添加事件监听器
TemperatureLogger logger = new TemperatureLogger();
sensor.addTemperatureListener(logger);
// 模拟温度变化
sensor.setTemperature(23.5);
sensor.setTemperature(24.0);
sensor.setTemperature(25.5);
// 移除事件监听器
sensor.removeTemperatureListener(logger);
}
}
在这个例子中,我们创建了一个 TemperatureSensor
类,它可以检测温度变化,并通过 TemperatureListener
接口通知监听器。TemperatureLogger
类实现了 TemperatureListener
接口,并打印出温度变化。在 main
方法中,我们模拟了温度变化,并观察了监听器的行为。
请注意,这个例子没有使用任何图形用户界面组件,是一个纯后端的事件监听和处理的例子。