Java中的回调函数问题

最近在工作中经常会遇到“回调函数”这样一个词,刚开始的时候确实也不是很明白什么是回调函数,感觉挺高深的,后来经过一系列的资料查找和仔细体会,发现回调函数也就那么一回事儿,下面就来说说吧。
所谓回调,和普通的方法调用不同的是,A类在调用B类的时候,B类同样拥有调用A类的权利,实现的关键就是:
1、定义一个回调接口,CallBackInterface,同时在里面声明回调函数f();
2、定义一个类A,让它去实现回调接口CallBackInterface,实现接口里的回调函数,函数里面的内容就是你要实现的业务逻辑代码。
3、有一个类B,它里面必须有一个函数g(CallBackInterface ci),这个函数需要有CallBackInterface类型的参数,这样就可以在类B里面去调用接口里面定义的那个回调函数f()了。
4、注册回调函数,把类A的对象传入到类B中,这样就形成了一个回调的机制。
下面还是举一个大家很熟悉也非常经典的回调例子吧。
有一个老板,他有很多员工,他不可能一直监督每一位员工的工作情况,于是要求员工在完成了某项工作后主动地告诉老板,老板根据他们的通知再做其他的安排。老板相当于程序中高层部分,员工相当于程序中底层的部分。下面是实现步骤:

//回调接口,员工通过这个借口去通知老板
public interface CallBackInterface{
    //声明回调函数
    public void talkAbout(String mess);
}
//老板这个人,实现回调接口
public Class Boss implements CallBackInterface{
    //实现回调函数
    @Override
    public void talkAbout(String mess){
        System.out.println("员工说:"+mess);
        System.out.println("老板说:信息已经收到啦!");
    }
}
//员工类
public Class Employee{
    CallBackInterface ci;
    //有一个方法去获得回调接口类型的对象
    public Employee(CallBackInterface ci){
        this.ci=ci;
    }
    //员工开始工作了,他工作完后自动给他的老板报告信息
    public void doWork(){
        for(int i=1;i<100;i++){
            System.out.println("正在做地"+i+"件事");
            }
        //调用回调函数,告诉老板我完成了工作
        ci.talkAbout("老板我完成工作了!");
    }
}
//主函数
public static void main(String[] args){
    //老板出现了
    Boss boss=new Boss;
    //有一个员工,创建他时把boss对象传入,完成回调的注册
    Employee em1=new Employee(boss);
    //开始工作了
    em1.doWork();
}

当员工完成了工作后,他就会去回调Boss类里面的回调方法,实现了底层对高层的调用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值