/**
* 老方 : 黑马的CEO 想公司的战略,,也数钱 class A
*
* 华哥 : 黑马android部门的负责人 讲课,排课表 class B
*
* 老方 : 拿起电话问:泽华,,,,明天29期讲什么课程。。。
*
* 华哥 : 想了很久。。。。没有想起来,明天是什么课程。。。。。
*
* 老方 : 那你看看课表,明天29期是什么课程
*
* 华哥 : 我这会特别忙。。。没空搭理你。。。。。
*
* 老方 : 在电话里面说。。那行吧,那你 忙完了,一会在打电话告诉我。。
*
* 华哥 : 忙了很长久,,终于忙完了。。。。在拿起电话回复老方,,这个回复的方法就是回调。
*/
/**
*
* 什么是回调:
*
* 回调就是2个类之间进行交互。
*
* class A 方法D
*
* class B 方法C
*
* classA 想去调用classB里面的C方法。
*
* 结果 成了,calssB 去调用classA 里面的D方法
*/
public class Main {
public static void main(String[] args) {
HuaGe huaGe = new HuaGe();
LaoFang laoFang = new LaoFang(huaGe);
laoFang.ask("明天29期是什么课程");
}
}
/**
* 这个是回调接口
*
* @author Administrator
*
*/
public interface CallBack {
/**
*
这个是回调方法
*/
void result(String msg);
}
public class HuaGe implements CallBack {
@Override
public void result(String msg) {
}
/**
*
这个是Class B 里面的C方法
*/
public void message(CallBack laoFang, String msg) {
System.out.println("这个是老方问华哥的问题" + msg);
for (int i = 0; i < 10000; i++) {
}
System.out.println("华哥这个会想一下,明天29期是什么课程,想完之后也不知道什么课程");
buzy();
for (int i = 0; i < 10000; i++) {
}
System.out.println("华哥忙ing");
String result = "明天29期是,项目实战课程";
/*
* 结果却成了class b 返过来调用了class A里面的D方法
*/
laoFang.result(result);
}
private void buzy() {
System.out.println("老方说,泽华,我现在很忙,那你一会,把课表看一下,在打电话告诉我,明天是什么课程");
}
}
public class LaoFang implements CallBack {
private HuaGe huaGe;
public LaoFang(HuaGe huaGe) {
this.huaGe = huaGe;
}
/*
* 这个方法就是传说中的回调方法
*/
@Override
public void result(String msg) {
System.out.println("华哥拿起电话告诉老方:" + msg);
}
/**
*
class A 去华哥 老方通过这个方法去问华哥,msg
*/
public void ask(String msg) {
huaGe.message(LaoFang.this, msg);
}
}