不同对象上的事件监听器
创始人
2025-01-08 23:00:28
0

在不同对象上添加事件监听器可以通过以下几种方法实现:

  1. 使用匿名内部类作为监听器:
// 监听器接口
public interface MyListener {
    void onEvent();
}

// 监听器实现类
public class MyListenerImpl implements MyListener {
    @Override
    public void onEvent() {
        // 事件处理逻辑
    }
}

// 示例对象1
public class Object1 {
    private MyListener listener;
    
    public void setListener(MyListener listener) {
        this.listener = listener;
    }
    
    public void doSomething() {
        // 触发事件
        if (listener != null) {
            listener.onEvent();
        }
    }
}

// 示例对象2
public class Object2 {
    // 监听器实例
    private MyListener listener = new MyListenerImpl();
    
    public void doSomething() {
        // 触发事件
        listener.onEvent();
    }
}

// 使用示例
public class Main {
    public static void main(String[] args) {
        Object1 obj1 = new Object1();
        obj1.setListener(new MyListenerImpl());
        obj1.doSomething();
        
        Object2 obj2 = new Object2();
        obj2.doSomething();
    }
}
  1. 使用内部类作为监听器:
// 示例对象1
public class Object1 {
    private MyListener listener;
    
    public void setListener(MyListener listener) {
        this.listener = listener;
    }
    
    public void doSomething() {
        // 触发事件
        if (listener != null) {
            listener.onEvent();
        }
    }
    
    // 内部类作为监听器
    private class MyListenerImpl implements MyListener {
        @Override
        public void onEvent() {
            // 事件处理逻辑
        }
    }
}

// 示例对象2
public class Object2 {
    // 内部类作为监听器
    private class MyListenerImpl implements MyListener {
        @Override
        public void onEvent() {
            // 事件处理逻辑
        }
    }
    
    public void doSomething() {
        // 触发事件
        MyListener listener = new MyListenerImpl();
        listener.onEvent();
    }
}

// 使用示例
public class Main {
    public static void main(String[] args) {
        Object1 obj1 = new Object1();
        obj1.setListener(obj1.new MyListenerImpl());
        obj1.doSomething();
        
        Object2 obj2 = new Object2();
        obj2.doSomething();
    }
}
  1. 使用lambda表达式作为监听器:
// 示例对象1
public class Object1 {
    private MyListener listener;
    
    public void setListener(MyListener listener) {
        this.listener = listener;
    }
    
    public void doSomething() {
        // 触发事件
        if (listener != null) {
            listener.onEvent();
        }
    }
}

// 示例对象2
public class Object2 {
    public void doSomething() {
        // 触发事件
        MyListener listener = () -> {
            // 事件处理逻辑
        };
        listener.onEvent();
    }
}

// 使用示例
public class Main {
    public static void main(String[] args) {
        Object1 obj1 = new Object1();
        obj1.setListener(() -> {
            // 事件处理逻辑
        });
        obj1.doSomething();
        
        Object2 obj2 = new Object2();
        obj2.doSomething();
    }
}

这些方法可以适用于不同的场景,选择合适的方法取决于具体的需求和设计。

相关内容

热门资讯

一分钟教你!山西扣点子辅助器,... 一分钟教你!山西扣点子辅助器,决战卡五星辅助,细节开挂辅助教程(存在有挂);无需打开直接搜索加薇13...
科技介绍!小逸碰胡脚本,情怀打... 科技介绍!小逸碰胡脚本,情怀打七开辅助,分享开挂辅助教程(有挂方式);无需打开直接搜索打开薇:136...
记者发布!爱来辅助器,杭州都莱... 记者发布!爱来辅助器,杭州都莱破解版,盘点开挂辅助教程(有挂头条);无需打开直接搜索打开薇:1367...
玩家必备科普!钱塘十水三挂件,... 玩家必备科普!钱塘十水三挂件,开心泉州小程序有挂吗,细节开挂辅助教程(新版有挂);无需打开直接搜索薇...
玩家必用!蜀山四川小程序辅助,... 玩家必用!蜀山四川小程序辅助,掌电竞技辅助工具,细节开挂辅助教程(有挂方略);无需打开直接搜索薇:1...
今日科普!闲玩暗宝辅助软件,浙... 今日科普!闲玩暗宝辅助软件,浙江游戏大厅脚本修改,正品开挂辅助教程(有挂方略);无需打开直接搜索加(...
终于知道!小唐家乐园山西辅助软... 终于知道!小唐家乐园山西辅助软件,广西友乐辅助器,关于开挂辅助教程(有挂功能);无需打开直接搜索加薇...
详细说明!福建微乐小程序修改器... 详细说明!福建微乐小程序修改器,小闲川南宜宾辅助,必看开挂辅助教程(竟然有挂);无需打开直接搜索薇:...
关于!微信大a辅助,黑桃a3辅... 关于!微信大a辅助,黑桃a3辅助,正版开挂辅助教程(存在有挂);无需打开直接搜索加(薇:136704...
我来教教大家!蜀渝牌乐汇修改器... 我来教教大家!蜀渝牌乐汇修改器,河洛杠次脚本开发,曝光开挂辅助教程(有挂工具);无需打开直接搜索加薇...