不同对象上的事件监听器
创始人
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();
    }
}

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

相关内容

热门资讯

一分钟教会你!边锋辅助器小程序... 一分钟教会你!边锋辅助器小程序微信,威信茶馆透视辅助工具,详细工具(有挂细节)1、在威信茶馆透视辅助...
重磅来袭!小闲川南手游辅助器,... 重磅来袭!小闲川南手游辅助器,朋朋政和软件辅助器,详细app(有挂教学)小闲川南手游辅助器脚本下载中...
重大科普!微友辅助器免费版,哥... 重大科普!微友辅助器免费版,哥哥打大a辅助神器,详细挂(有挂功能)哥哥打大a辅助神器是不是有人用挂微...
程序员教你!爱来掌中宝有没有挂... 程序员教你!爱来掌中宝有没有挂,财神十三张福袋多少钱,详细方法(真的有挂)1、用户打开应用后不用登录...
玩家必备攻略!汇城辅助,红人阁... 玩家必备攻略!汇城辅助,红人阁自动挂机脚本,详细插件(有挂猫腻)所有人都在同一条线上,像星星一样排成...
实测分享!微友辅助器免费版,哥... 实测分享!微友辅助器免费版,哥哥打大a辅助神器,详细攻略(有挂细节)1、哥哥打大a辅助神器透视辅助软...
科技通报!潮娱乐鱼虾蟹公式辅助... 科技通报!潮娱乐鱼虾蟹公式辅助软件,多乐找刺激技巧辅助,详细挂(竟然有挂)1、这是跨平台的潮娱乐鱼虾...
免费测试版!潮娱乐鱼虾蟹公式辅... 免费测试版!潮娱乐鱼虾蟹公式辅助软件,多乐游戏修改器,详细工具(有挂教学)1、潮娱乐鱼虾蟹公式辅助软...
大家学习交流!微信小程序辅助器... 大家学习交流!微信小程序辅助器,蜀山挂机辅助,详细工具(有挂技巧)1、微信小程序辅助器有没有辅助教程...
科技揭秘!福气辅助器,微乐贵阳... 您好,微乐贵阳捉鸡麻将开挂这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很...