1、Java的接口支持提供了一种获得回调的等价功能的机制。其技巧就是:定义一个简单接口,并在该接口中声明我们要调用的方法,则可传递在某种事件发生时调用(即“回调”)。
如:老板(Boss)让工人(Worker)干完活告诉他干的情况如何。
public interface Event {
public String happenedEvent();
}
public class EventA implement Event {
public String happenedEvent() {
System.out.println(“发生了事件A”);
}
}
public class EventB implements Event {
public String happenedEvent() {
System.out.println(“发生了事件B”);
}
}
public class Worker {
private String name;
private Boss boss;
private Event event;
public Worker(String name, Event event) {
this.name = name;
this.event = event;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setBoss(Boss boss) {
this.boss = boss;
}
public Boss getBoss() {
return boss;
}
public void setEvent(Event event) {
this.event = event;
}
public Event getEvent() {
return event;
}
public void doWork() {
System.out.println(name + “ is doing the work!”);
for(int i=0; i<10000; ++i) {
int x = i;
}
System.out.println(name + “ finished the work, please send the message to his boss”);
boss.getWorkEvent(this, event);
}
}
public class Boss {
private String name;
public Boss(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void getHappenedEvent(Worker worker, Event event) {
System.out.println(“老板接收到的信息:” + worker.getName() + “ :” + event.happenedEvent());
}
public class TestCallBack {
public static void main(String args[]) {
Boss boss = new Boss(“老板”);
Worker w1 = new Worker(“张三”);
Worker w2 = new Worker(“李四”);
Event e1 = new EventA();
Event e2 = new EventB();
w1.setEvent(e1);
w2.setEvent(e2);
w1.doWork();
w2.doWork();
}
}
分享到:
相关推荐
Dev-Cpp.6.7.5.MinGW-w64.GCC.10.3.Setup.exe
Dev-Cpp.5.10.TDM-GCC.4.8.1.Setup.exe
hmcl-dev-3.5.4.234 2.jar
Red Panda Dev-C++.lnk
OpenJDK是Java Development Kit (JDK) 的开放源代码实现,由Oracle公司最初发起,但现在由全球多个开源社区共同维护和改进。 Java JDK是开发者编写、调试和运行Java应用程序所需的核心组件。它包含Java虚拟机(JVM...
Typora-1.2.1-dev.dmgTypora-1.2.1-dev.dmgTypora-1.2.1-dev.dmgTypora-1.2.1-dev.dmgTypora-1.2.1-dev.dmgTypora-1.2.1-dev.dmgTypora-1.2.1-dev.dmgTypora-1.2.1-dev.dmgTypora-1.2.1-dev.dmgTypora-1.2.1-dev....
【标题】"dev-ezx-0.2.0.rar_dev-ezx-0.2.0.t_dev-ezx-0.2.0.tg_dev-ezx-0.2.0" 提供的是一款针对 Motorola E680I EZX 平台的开发包,版本为 0.2.0。这个压缩包包含了多个文件格式,如 .rar、.t、.tg 和 .tgz,可能...
Java weka包,提供arff文件操作和诸多聚类分类算法等。 其实网上有很多相关的教程,从如何下载weka包,到如何使用,都有很详细的说明,这里上传上来以方便使用。
Java 1.8.0 OpenJDK 是一个广泛使用的开源Java开发工具包,它为开发者提供了执行和构建Java应用程序所需的所有组件。OpenJDK是Java Development Kit(JDK)的一个实现,由甲骨文公司(Oracle)赞助并维护,但其源...
gcc-ada-4.8.1-4-mingw32-dev.tar.lzma MinGW
Embarcadero Dev-C++.lnk
Dev-Cpp.5.11.TDM-GCC.4.9.2.安装程序。 调试工具 Insight工具是一款全功能的图形化用户接口的GNU调试工具,您可以使用这一工具对BCM模块设备的应用进行高效率的调试 丰富的系统软件 嵌入式实时操作系统 ...
Dev-Cpp.6.6.GCC.10.2.Setup.exe
标题中的"Dev-Cpp-5.11-TDM-GCC-4.9.2-Setup.exe"和描述中的"Dev-Cpp_5.11_TDM-GCC_4.9.2_Setup.exe"指向的是同一款软件的安装程序,名为Dev-Cpp,这是一个集成开发环境(IDE),专门用于编写C++语言的程序。...
libaio-devel-0.3.106 是一个针对 i386 和 x86_64 架构的开发包,它在 Oracle 11g Release 2 (11gR2) 的安装过程中起着至关重要的作用。libaio,全称为“Linux Asynchronous Input/Output”,是 Linux 操作系统中的...
在下载并解压`mingwrt-3.15.2-mingw32-dev.tar.gz`后,你需要将bin目录添加到系统PATH环境变量中,这样就可以在命令行中直接调用编译工具。然后,你可以使用gcc或其他编译器开始编译源代码,同时通过`#include ...
**PyPI 官网下载 | PyFunceble_dev-0.128.0-py3-none-any.whl** PyPI(Python Package Index)是Python社区的官方软件仓库,为Python开发者提供了一个集中发布和下载Python模块的地方。PyFunceble_dev-0.128.0-py3-...
在Java编程环境中,有时我们需要与C++库进行交互,实现跨语言通信。为了实现这个目标,Java Native Access(JNA)提供了一种解决方案。标题提到的"jna-5.6.0.jar"和"jna-platform-5.6.0.jar"是JNA框架的关键组成部分...
资源分类:Python库 所属语言:Python 资源全名:python-dev-docker-project-0.1.9.dev0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
本文将深入探讨GLib库及其在开发中的应用,以及如何利用glib-dev-2.12.11.zip进行开发工作。 GLib是GTK+图形用户界面库的基础,但它的作用远不止于此。它是一个C语言的库,提供了一系列基础数据类型、线程支持、...