通俗讲解callBack 详细 详解 java回调函数 的异步回调 一看就会懂 原创

通俗讲解 java 回调函数 callBack 的异步回调 一看就会懂

趣味讲解哦:


先说 这个 callBack , 扒拉很多资料 都说是 回调 ,回调。 回调 你大爷啊。
根本没说清楚 回调 到底是咋回事。

有的还说 是 什么 小明让小芳 算题 ,算好后 告诉她… 什么鬼。

我从 callback 来说 这个 回调函数吧

callback 的 英语翻译是 >>>> n.回收,回叫信号,复查;

别他嘛的 回调 回调 了 回你吗了个鬼啊。正确翻译应该 叫 接受别人回复 的函数。

callback 的意思 就是 接受信息 , callback 是个 接口。谁实现了他,谁就有接受信息的这个方法。

有人说 callback 是回电话的意思。 你让 别人 回电话 。 是不是就是 接受别人 给你的信息呢 ?

现在 搞清楚了 callback 的含义了吧 ,现在 开始 用 代码 + 解释 来 讲解 回调函数

代码 用 王者荣耀 来举例 更贴近 现实

代码 意思 是 一个 坦克 类, 一个 打野 类 ,一个 回收信息 的接口 。 坦克 实现了 回收信息 的 接口, 坦克 的 方法 有 : 自己发育(); 回收信息(); 发送计划(); 打野类 有 方法 : 执行坦克计划();

1 个 回调 callback接口 叫 “收信息” IShouXinXi 接口我习惯性的 前面加了个I 字母 。

1 个 坦克 类 叫 TanKe 。 1 个 打野 类 叫 DaYe

代码 奉上

/**
 *  收 信息  的接口  :
 *     收到  信息  做   事情
 * @author Xin  扣扣 :  私企四四  九三零四     不懂可以加  一起交流
 *
 */
public interface IShouXinXi {     //相当于 CallBack 接口
    void shouXinXi(String xinXi);
}

/**
 * 坦克类 :   
 *      方法1:  发计划
 *      方法2:  对线  
 *      方法3:  收信息  收到信息 
 * @author Xin
 *
 */
public class TanKe implements IShouXinXi {
    private DaYe daYe;

    public TanKe(DaYe daYe) {
        this.daYe=daYe;
    }

    /**
     * 坦克  开局  说  战斗计划
     * @param plan
     */
    public void sayPlan(String plan) {
        System.out.println("坦克说:"+plan);
        new Thread(new Runnable() {
            public void run() {
                daYe.zhiXingTanKePlan(TanKe.this, plan); //打野 异步 执行 坦克的计划

            }
        }).start();
        // 开始 战斗  坦克开始 对线了   坦克 忙别的 了    , 打野继续 打怪升级去了
        duiXian();
    }

    /**
     * 坦克 对线 , 等待  打野4级  来配合  一起 抓人。 
     */
    public void duiXian() {
        System.out.println("坦克  对线  中....");
    }

    /**
     * 实现了  回调接口  的方法
     */
    @Override
    public void shouXinXi(String xinXi) {
        System.out.println("坦克 收到了 打野的信号,信号内容是:"+xinXi);
    }



}


public class DaYe {  //打野类
    private int levl=1;
    /**
     * 执行  坦克 的 计划  
     * @param tanKe  坦克 
     * @param plan   坦克的 计划
     */
    public void zhiXingTanKePlan(TanKe tanKe,String plan) {
         //模拟 打野
        for(int i=0;i<30;i++){
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            if(i==0){

                levl=4;
            }
        }

        if (levl==4) {
            String xinXi=" 坦克你好。任务已完成,我可以抓人了。请你 去把 敌人 引过来";//任务完成之后  00打野回电话
            tanKe.shouXinXi(xinXi); //打野 调用 坦克,即 回调
        }

    }
}

public class MainTest {

    public static void main(String[] args) {

        DaYe sunWuKong = new DaYe();  // 打野 孙悟空    实例

        TanKe yaSe = new TanKe(sunWuKong); // 坦克 亚瑟  实例
        String plan="计划是:打野 猥琐发育  别浪 , 等你升  4 级 来 抓人";
        yaSe.sayPlan(plan);  //亚瑟说  开局计划;  等打野4级后 执行我的收信息 方法 ,我们一起抓人
    }

}
  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值