不同对象上的事件监听器
创始人
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、...
有消息称!wepoker免费脚... 有消息称!wepoker免费脚本咨询(透视)衢州都莱罗松挂机技巧(好像是有辅助app)-哔哩哔哩;该...
透视机巧!pokermaste... 透视机巧!pokermaster脚本(透视)pokemmo辅助脚本(辅助)原来一直总是有攻略(哔哩哔...
透视智能ai!hhpoker辅... 透视智能ai!hhpoker辅助挂是真的吗(透视)新蜜瓜大厅破解(一直真的是有辅助辅助器)-哔哩哔哩...
透视总结!约局吧作必弊脚本(透... 透视总结!约局吧作必弊脚本(透视)红龙poker有辅助吗(辅助)确实真的是有脚本(哔哩哔哩)一、约局...
据监测!aa poker辅助(... 据监测!aa poker辅助(透视)楚天游卡五星辅助器(确实存在有辅助工具)-哔哩哔哩1、每一步都需...
透视学习!智星德州可以透视吗(... 透视学习!智星德州可以透视吗(透视)xpoker辅助控制(辅助)真是一直都是有攻略(哔哩哔哩)1)智...
随着!aa poker辅助包(... 随着!aa poker辅助包(透视)科乐游戏辅助脚本视频(都是真的有辅助工具)-哔哩哔哩1、首先打开...
透视总结!werplan免费挂... 透视总结!werplan免费挂下载(透视)poker world辅助器(辅助)真是一直总是有app(...
今年以来!wepoker免费脚... 今年以来!wepoker免费脚本咨询(透视)途游辅助软件网站(原来是真的辅助插件)-哔哩哔哩1、首先...