一个例子弄懂Java中的接口回调

今天新来的同事问我什么是接口回调,我就给他举了一个买水果的例子

情形:

/**
 * ClassA(A君)让ClassB(B君)买水果,如果给B君的信息是1。就买苹果。如果是2,就买香蕉。
 * 然后买完了以后通知A君。至于A君拿到水果以后干什么那就是A君的事情了
 * 本质就是。ClassA调用ClassB的buy()(也就是回调方法。)方法。
 * 等buy方法完成以后再回头通知classA,
 * 如此的话。ClassA里边必须有一个B的实例
 *本质就是调用接口中的方法
 *
 *
 * */



1首先要声明一个接口,

/**
 * Created by benji on 2018/2/9.
 * QQ:1152138958
 */

interface CallbacListener {
    void buyApple();
    void buyBanana();
}

2,ClassB中的方法要以这个接口为参数

/**
 * Created by benji on 2018/2/9.
 * QQ:1152138958
 */

public class ClassB {

    public void buy(final int i, final CallbacListener callbacListener){

        //延迟3秒 模拟B君买完东西通知A君,如果接收到A君发来的1的信息。就买苹果。如果是2就买香蕉
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                if (i ==1){
                    callbacListener.buyApple();
                }else {
                    callbacListener.buyBanana();
                }

            }
        },3000);


    }
}

3,ClassA中要有一个ClassB的引用。然后用这个实例去调用buy方法。


private ClassB classB = new ClassB();
classB.buy(1, new CallbacListener() {
    @Override
    public void buyApple() {
        //其实在这里完全可以调用A君的任何方法。也就达到了回调的目的
        tv_show.setText("A君。我已经给你买完了,买的是苹果");
    }

    @Override
    public void buyBanana() {
        tv_show.setText("A君。我已经给你买完了,买都是香蕉");
    }
});

其实说白了就是类B中有个以接口为参数当方法C。然后在A中调用B中当方法C。这时候A中必须重写接口当方法。

就这样


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值