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

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

相关内容

热门资讯

透视规律(WEPOKER)we... 透视规律(WEPOKER)wepoker底牌透视(透视)总是是真的有挂(存在挂教程)1、wepoke...
透视免费(wpk作弊是真的吗)... 透视免费(wpk作弊是真的吗)一直是真的有挂(透视)透视辅助(2025新版技巧);1)wpk作弊是真...
透视讲解(wepoker)we... 透视讲解(wepoker)wepoker开辅助能查到吗(透视)竟然真的有挂(总结教程)1、下载好we...
透视苹果版(wpk俱乐部怎么作... 透视苹果版(wpk俱乐部怎么作弊)竟然存在有挂(透视)透视工作室(微扑克教程);1、超多福利:超高返...
透视免费(wepoker)we... 透视免费(wepoker)wepoker辅助脚本(透视)原来有挂(详细教程)1、超多福利:超高返利,...
透视游戏(wpk有辅助器吗)原... 透视游戏(wpk有辅助器吗)原来真的有挂(透视)透视辅助下载(揭秘教程)一、wpk有辅助器吗软件透明...
透视挂(WePoKer)wep... 透视挂(WePoKer)wepoker有辅助工具吗(透视)一直有挂(德州教程)1、任何wepoker...
透视辅助(wpk私人局辅助是真... 透视辅助(wpk私人局辅助是真的吗)都是是有挂(透视)辅助插件(第三方教程)1、完成wpk私人局辅助...
透视讲解(WePoKer)we... 透视讲解(WePoKer)wepoker可以开透视吗(透视)确实是真的有挂(解说技巧)小薇(透视辅助...
透视智能ai(wpk插件辅助)... 透视智能ai(wpk插件辅助)一直是真的有挂(透视)模拟器(曝光教程)1、实时wpk插件辅助开挂更新...