Java 监听器示例(非界面)

在Java中,java.util.EventListener 是一个标记接口,用于表示一个对象可以接收事件并处理它。通常,它与具体的事件监听器接口一起使用,这些接口继承自 EventListener 并定义了具体的事件处理方法。

以下是一个非界面相关的例子,我们将创建一个简单的温度监控系统。这个系统将有一个 TemperatureSensor 类,它可以在温度变化时通知监听器。我们还会定义一个 TemperatureListener 接口,它继承自 EventListener。

java 复制代码
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 方法中,我们模拟了温度变化,并观察了监听器的行为。

请注意,这个例子没有使用任何图形用户界面组件,是一个纯后端的事件监听和处理的例子。

相关推荐
哦虎!1 小时前
【JavaEE】网络初识
java
for_ever_love__2 小时前
MySQL ORDER BY 排序优化:从 Using filesort 到索引有序扫描(含双路 / 单路排序原理)
java·mysql·优化·存储·by·order·filesort
程序猿追2 小时前
kotlin-retry 接入鸿蒙后,怎样确认它真的会停止重试
开发语言·kotlin·harmonyos
我是人✓2 小时前
Java文件上传三方式对比:从传统到SpringBoot
java·开发语言
智能直播3 小时前
网络RTMP拉流不卡顿、声音不同步,一文讲透缓冲区、时间戳
开发语言·ffmpeg·php·音视频·视频编解码
欣栀♡3 小时前
JVM 频繁 Full GC 先看日志括号里的 cause,jstat 的 FGC 在 JDK 8 上会骗人
java·jvm
IT研究室3 小时前
最新计算机毕业设计选题推荐-基于spring boot的葡萄酒文化宣传网站-网站-文档指导-Java-springboot
java·spring boot·课程设计
慧都小项3 小时前
MyEclipse 中创建和测试 JAX-RS REST 接口:从项目配置到 REST Explorer
java·restful·myeclipse·jax-rs
Wang's Blog3 小时前
Java 项目实战: 交友项目 - 入门案例:编写 Dubbo 服务提供者
java·dubbo·交友
墨云安全3 小时前
内网资产无法暴露到公网,怎么做安全检测?2026 年内网渗透测试的落地路径
开发语言·安全·网络安全·渗透测试·php