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() ); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)