java中回调的概念

回调只是个概念,就是把你的接口对应的实现类的一个实例当成一个参数传递给一个函数调用,那个函数处理过程中会调用你的这个接口中的方法。


在下面这个方法中,formatter 是一个回调,因为 receiveMessage  本来是被你调用的,但它回过头来调用你提供的 MsgFormatter 方法,这就是概念。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
byte [] buffer = ...;
 
Msg receiveMessage(SocketChannel channel, MsgFormatter formatter) {
        // 读取网络数据,并请求 formatter 来识别它是什么格式,如果是某种消息格式的一个完整的报文条目(比如一个完整的QQ消息)就返回它,否则返回 null 并缓存部分不完整的内容并在下一次得到一条完整消息时再返回它。
        
        buffer = getBytes(channel);
        // 读取到部分字节后询问 formatter 来猜测一下它的格式,这是否一条完整消息以及消息类型。
        boolean  fullyReceived = formatter.guessFormat(buffer);
        if  (fullyReceived) {
           Msg msg = formatter.decode(buffer);
           // 消息已经处理了,清空缓存的部分内容,下次重新接收。
           buffer = ... ;
           return  msg;
        else  {
            return  null ;
       }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值