您的位置:首页 > 编程语言 > Java开发

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

2018-02-09 16:27 411 查看
今天新来的同事问我什么是接口回调,我就给他举了一个买水果的例子
情形:
/**
* 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君。我已经给你买完了,买都是香蕉");
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: