java回调机制(同步回调)
场景:父亲问姐姐:弟弟的作业写好了吗?
姐姐就去问弟弟:弟弟,你作业写好了吗?
弟弟写完作业后,告诉姐姐:姐姐,我作业写完了!
姐姐知道后,就告诉父亲:父亲,弟弟作业写完了!
代码:
CallBack.java传递消息的接口:
package myInterfaceCallback;
public interface CallBack {
public void tell(String result);
}
Brother.java弟弟类:
package myInterfaceCallback;
import myInterfaceCallback.CallBack;
public class Brother {
public void doHomework(CallBack tellSister, String question) {
System.out.println(question);
tellSister.tell("弟弟:姐姐,我已经写完了!");
}
}
Sister.java姐姐类:
package myInterfaceCallback;
public class Sister implements CallBack{
public Brother brother;
public Sister(Brother brother) {
super();
this.brother = brother;
}
@Override
public void tell(String result) {
// TODO Auto-generated method stub
System.out.println(result);
}
public void toAskBrother(CallBack tellParent, String question) {
// TODO Auto-generated method stub
brother.doHomework(Sister.this, question);
tellParent.tell("姐姐:父亲,弟弟作业写完了!");
}
}
Parent.java父亲类:
package myInterfaceCallback;
public class Parent implements CallBack{
public Sister sister;
public Parent(Sister sister) {
super();
this.sister = sister;
}
@Override
public void tell(String result) {
// TODO Auto-generated method stub
System.out.println(result);
}
public void askToSister(String question) {
// TODO Auto-generated method stub
System.out.println(question);
sister.toAskBrother(Parent.this, "姐姐:弟弟,你作业做好了吗?");
}
}
Test.java测试运行类:
package myInterfaceCallback;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Parent parent = new Parent(new Sister(new Brother()));
parent.askToSister("父亲:弟弟作业做好了吗?");
}
}
运行结果:
父亲:弟弟作业做好了吗?
姐姐:弟弟,你作业做好了吗?
弟弟:姐姐,我已经写完了!
姐姐:父亲,弟弟作业写完了!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构