开始根本不是太懂,看了一篇大牛的博客,感觉会了那么一点,我把他改得在通俗点吧,万一以后自己还要看看呢~~
直接贴代码吧 ,比较好懂!
菜鸟类
package com.feng.test;
import com.feng.test.Daniu.CallbackInter;
public class Cainiao {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
//世界多出一个彩笔
Cainiao cainiao = new Cainiao();
//菜鸟有问题了,不懂就问
cainiao.hasQuestion();
}
//这里有个问题 按照正常人类逻辑 是先要到电话 在xxx 在得到大牛的答案,
//而这里是先实现得到大牛的答案 在来要到大牛的号码提出问题
//即:如果我们把callbackInter的接口函数实现放在setcallbackInter()
//后面 是会报错
//求大神指导下
public void hasQuestion(){
//彩笔找到了一个大牛
Daniu daniu = new Daniu();
//告知大牛拿到了答案 (实现大牛接口的函数)
CallbackInter callbackInter = new CallbackInter() {
@Override
public void callback(String answer) {
// TODO 自动生成的方法存根
System.out.println("彩笔1号:嗯 我收到答案了,答案是 /"+answer+"/");
}
};
//要到了大牛的电话打过去提出了自己的问题
daniu.setCallbackInter("彩笔1号", "21+23等于多少?", callbackInter);
//让大牛思考会儿
daniu.Think();
}
}
大牛类
package com.feng.test;
public class Daniu {
//抽线回调接口
private String name;
public interface CallbackInter{
void callback(String answer);
}
private CallbackInter callbackInter;
public CallbackInter getCallbackInter() {
return callbackInter;
}
//大牛:哪个彩笔要了我的号码,我就回答哪个彩笔的问题(提供注册函数)
public void setCallbackInter(String name,String question,CallbackInter callbackInter) {
System.out.println("大牛:电话响了,我收到了 /"+name+"/的问题,问题是 /"+question+"/");
this.name = name;
this.callbackInter = callbackInter;
}
//大牛脑子在思考并得出答案
public void Think(){
for(int i = 0;i<100;i++){
if(i ==0){
System.out.println("大牛正在思考问题...");
}
}
String answer = "54";
System.out.println("大牛:我想到答案了, 打电话回去给 /"+name+"/告诉他答案");
//大牛思考完后通知彩笔(彩笔实现接口函数)
callbackInter.callback(answer);
}
}
最后 运行截图: