一个例子弄懂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君。我已经给你买完了,买都是香蕉");
}
});
情形:
/**
* 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君。我已经给你买完了,买都是香蕉");
}
});
相关文章推荐
- 一个例子弄懂Java中的接口回调
- 一个经典例子让你彻彻底底理解java回调机制
- 一个经典例子让你彻彻底底理解java回调机制
- 一个经典例子让你彻彻底底理解java回调机制
- 一个经典例子让你彻彻底底理解java回调机制
- 一个经典例子让你彻彻底底理解java回调机制
- 一个经典例子让你彻彻底底理解java回调机制(一)
- 一个经典例子让你彻彻底底理解java回调机制
- 一个经典例子让你彻彻底底理解java回调机制(转)
- 一个经典的例子让你彻底理解Java回调机制
- 一个经典例子让你彻彻底底理解java回调机制
- (转)一个经典例子让你彻彻底底理解java回调机制
- 一个经典例子让你彻彻底底理解java回调机制
- 一个经典例子让你彻彻底底理解java回调机制
- 一个体现Java接口及工厂模式优点的例子
- android技巧(五)一个异步+接口回调的例子
- 一个经典例子让你彻彻底底理解java回调机制
- 看一个接口回调的例子
- 一个经典的例子让你彻彻底底理解java回调机制
- 一个经典例子让你彻彻底底理解java回调机制