java 事件回调的写法,使用回调接口方式

java编写时,尤其是先用C#语言后转成java的,在编程时一定会遇到,java中没有委托事件的概念。

那主类App.java类中实例了一个 A对象,那A对象因为某种原因触发了一个事件,想回调App.java中的一个函数,应该怎么写呢?

在java中有多有方法来实现,这里讲下 回调接口方式,我感觉这种方式比较好理解。

以 Netty写的 收发消息的客户端为例

新建一个接口类  INettyClientEventListener.java 文件

当然这个接口类中可以写多个回调函数(事件)

public interface INettyClientEventListener {
    void NettyClientEvent_RecMessage(String message);
}

在 App.java 类中 继承它

public class App implements INettyClientEventListener
{

在 App.java 类中 实现  NettyClientEvent_RecMessage(String message) 函数

//NettyClient收到消息事件----------------------------------------------
public void NettyClientEvent_RecMessage(String message) {
    // 执行你希望执行的逻辑
    System.out.println("Received message: " + message);
}

在  NettyClientHandler.java 也就是你想回调App.java函数的类中 写在哪里触发事件

定义这个 事件监听的接口

private INettyClientEventListener nettyClientEventListener;

在实例化函数中 给它赋 New App()

 public NettyClientHandler(Bootstrap bootstrap,EventLoopGroup group ) {
        this.bootstrap = bootstrap;
        this.group=group;

        this.nettyClientEventListener = new App();
}

在收到消息的函数中触发 事件回调

复制代码
@Override
 public void channelRead(ChannelHandlerContext ctx, Object msg) {
        try {
            // 处理接收到的消息
            System.out.println("收到消息: " + msg);
            
            //触发事件,回调App.java中的NettyClientEvent_RecMessage()函数
            nettyClientEventListener.NettyClientEvent_RecMessage(msg.toString());
        
      }catch (Exception ex){
            System.out.println( "NettyClientHandler channelRead() 收到消息时,出现异常 "+ ex.toString() );
      }
}        
复制代码

 

posted @   海乐学习  阅读(80)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示