- 浏览: 12786 次
- 性别:
- 来自: 南京
最新评论
所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法,这样子说你是不是有点晕晕的,其实我刚开始也是这样不理解,来看看人家说的比较经典的回调方式:
Class A实现接口CallBack callback——背景1
class A中包含一个class B的引用b ——背景2
class B有一个参数为callback的方法f(CallBack callback) ——背景3
A的对象a调用B的方法 f(CallBack callback) ——A类调用B类的某个方法 C
然后b就可以在f(CallBack callback)方法中调用A的方法 ——B类调用A类的某个方法D
举个例子说明一下:小明做作业遇到一个问题,“1+1=?”。小明不会,于是去厨房问妈妈。妈妈说她现在比较忙,没时间答复小明,等她做完家务会去帮他结题。小明说,那自己先去做其他题目。
下面用代码来说明一下:
//首先定义一个回调接口,对应于背景1
public interface CallBack {
public void result(String result);
}
//定义小明类,小明需要有一个回调方法,让妈妈在算好题目之后来通知自己,所以需要实现回调接口,对应于背景2
public class XiaoMing implements CallBack {
private Mother mother;
public XiaoMing(Mother mother) {
this.mother = mother;
}
public void askQuestion(final String question) {
System.out.println("小明:妈妈,请问" + question);
new Thread(new Runnable() {
@Override
public void run() {
mother.executeQuestion(XiaoMing.this, question);
}
}).start();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
doOtherHomework();
}
public void doOtherHomework() {
System.out.println("小明:那我先去做其他题目。");
}
@Override
public void result(String result) {
System.out.println("妈妈:" + result);
}
}
//定义妈妈类,在这里妈妈需要在做完家务之后,去告诉小明答案,即调用小明的方法,对应于背景3
public class Mother {
public void executeQuestion(CallBack callback, String question) {
System.out.println("妈妈:等我做完家务再帮你结题。");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("妈妈:我做完家务了,现在就来解答你的问题。");
callback.result("1+1=2。");
}
}
//测试类
public class test {
public static void main(String[] args) {
Mother mother = new Mother();
XiaoMing son = new XiaoMing(mother);
son.askQuestion("1+1=几?");
}
}
Class A实现接口CallBack callback——背景1
class A中包含一个class B的引用b ——背景2
class B有一个参数为callback的方法f(CallBack callback) ——背景3
A的对象a调用B的方法 f(CallBack callback) ——A类调用B类的某个方法 C
然后b就可以在f(CallBack callback)方法中调用A的方法 ——B类调用A类的某个方法D
举个例子说明一下:小明做作业遇到一个问题,“1+1=?”。小明不会,于是去厨房问妈妈。妈妈说她现在比较忙,没时间答复小明,等她做完家务会去帮他结题。小明说,那自己先去做其他题目。
下面用代码来说明一下:
//首先定义一个回调接口,对应于背景1
public interface CallBack {
public void result(String result);
}
//定义小明类,小明需要有一个回调方法,让妈妈在算好题目之后来通知自己,所以需要实现回调接口,对应于背景2
public class XiaoMing implements CallBack {
private Mother mother;
public XiaoMing(Mother mother) {
this.mother = mother;
}
public void askQuestion(final String question) {
System.out.println("小明:妈妈,请问" + question);
new Thread(new Runnable() {
@Override
public void run() {
mother.executeQuestion(XiaoMing.this, question);
}
}).start();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
doOtherHomework();
}
public void doOtherHomework() {
System.out.println("小明:那我先去做其他题目。");
}
@Override
public void result(String result) {
System.out.println("妈妈:" + result);
}
}
//定义妈妈类,在这里妈妈需要在做完家务之后,去告诉小明答案,即调用小明的方法,对应于背景3
public class Mother {
public void executeQuestion(CallBack callback, String question) {
System.out.println("妈妈:等我做完家务再帮你结题。");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("妈妈:我做完家务了,现在就来解答你的问题。");
callback.result("1+1=2。");
}
}
//测试类
public class test {
public static void main(String[] args) {
Mother mother = new Mother();
XiaoMing son = new XiaoMing(mother);
son.askQuestion("1+1=几?");
}
}
发表评论
-
Java中的四种引用
2018-03-22 15:12 4781、强引用(Strong Referen ... -
java中try、catch、finally中含有return的简单总结
2017-06-01 14:24 549try语句在返回前,将其他所有的操作执行完,保留好要返回的值 ... -
java泛型总结
2016-04-20 13:26 371泛型(generic):是指参数化类型的能力。可以定义泛型类 ... -
对象的序列化与反序列化
2016-04-18 10:22 488序列化:把对象转换为字节序列的过程 反序列化:把字节序列恢 ... -
覆盖hashCode方法
2016-04-15 13:44 602覆盖hashCode方法规约: ... -
通用equals方法
2016-04-14 17:50 5081.1 equals方法 覆盖equals方法必须遵守的 ... -
java对象的创建建议
2016-04-14 16:39 3531.1 考虑用静态工厂方法代替构造器 示例: publi ... -
枚举类型
2016-04-06 15:50 01.1 基本enum特性 public e ... -
String深入理解
2016-04-05 15:33 462String对象是不可变的,每个看起来会修改String对象 ... -
java内部类详解
2016-04-01 15:59 464内部类 可以将一个类 ... -
理解java中的抽象类与接口
2016-03-31 21:42 440抽象方法:仅有声明没 ... -
面向对象四大基本特征
2016-03-31 14:48 427抽象: 抽象就是找出一 ... -
jdk动态代理
2016-03-30 17:28 430代理模式: 为其他对象提供一种代理,并以控制对这个对象的访问。 ... -
java继承与多态
2016-03-30 11:33 516继承 在java中使用extends ... -
final和static浅析
2016-03-30 10:47 297final 通常代表“这是无法改变的”。 一般使用到final ... -
java数据存储
2016-03-28 22:42 343Java中数据存储区域包括: 1.寄存器:最快的存储区,由编 ... -
java访问控制权限
2016-03-28 22:34 370java访问控制权限:private,protected,包 ... -
java基本类型
2016-03-28 22:31 315基本类型 java确定了每种基本类型的存储空间大小 基本类型 ... -
Java7语法新特性
2016-03-11 15:17 298转自:http://uuhorse.iteye.com/blo ...
相关推荐
Java回调机制是软件设计模式中的一种,特别是在Java和Android开发中广泛应用。回调允许服务端对象在执行特定操作后,通知并调用客户端对象的方法。这种机制使得程序可以在异步环境中运行,即服务端处理完一个任务后...
Java回调机制是一种编程模式,它允许一个对象在特定事件发生时调用另一个对象的方法。在上述例子中,回调机制的概念逐渐展开,通过一个简单的幼儿园加法故事进行解释。 首先,我们有`Student`类,它有一个`fill...
Java回调机制是一种编程概念,其核心在于一个对象(A)调用另一个对象(B)的方法,而这个方法内部又反过来调用A对象的另一个方法,形成一种链式反应。回调在多线程、异步处理和事件驱动编程中非常常见,因为它允许...
Java回调机制是一种编程模式,它允许一个对象在另一个对象完成特定操作后被通知或调用。这种机制在软件设计中非常常见,特别是在处理异步操作和事件驱动编程中。通过回调,一个对象(调用者)可以注册一个回调函数或...
在回调机制中,接口扮演着关键角色,因为它定义了被调用的回调方法。例如,`OnButtonClickListener`接口可能包含了当按钮被点击时需要执行的方法。 2. **回调函数的实现**:在描述中提到,回调函数是通过自己模拟...
java回调机制实例详解 java回调机制是一种常见的设计模式,广泛应用于软件开发中。它允许一个对象在执行某个操作时,能够通知另一个对象,这样可以实现松耦合、灵活性强的编程模型。在java中,我们可以使用回调机制...
Java回调机制是编程中一种非常重要的设计模式,它允许一个对象在另一个对象执行特定操作后得到通知或执行相应的处理。这种机制在Java中通常通过接口实现,使得被调用的对象能够在适当的时候调用回调方法来传递结果...
Java回调是一种设计模式,它是当一个对象调用另一个对象的方法时,被调用对象通过某种方式在完成操作后反过来调用调用者的方法,这种机制就是回调。在Java中,回调通常通过接口或者抽象类来实现。这篇"给初学者的...
Java回调机制可以分为两种:同步回调和异步回调。同步回调是在主程序中注册回调函数,等待耗时任务的完成后执行回调函数;异步回调是在耗时任务中注册回调函数,执行耗时任务后执行回调函数。 三、Java线程机制 ...
Java回调机制是一种设计模式,它允许一个对象在完成特定任务时通知另一个对象。这种机制使得代码更加灵活,因为被调用者可以在适当的时候主动调用调用者的某个方法,而不仅仅是被动地接收返回值。回调在多线程、事件...
Java的回调机制是一种设计模式,它允许一个对象在完成特定操作后通知另一个对象。这种机制在软件开发中常用于处理事件、异步编程以及对象间的通信。回调的主要优点是提高了代码的灵活性和可扩展性。 1. **回调的...
### Java基础核心理解+什么是回调及回调机制讲解 #### 一、回调机制的引入与应用场景 在软件开发中,特别是面向对象编程语言如Java中,模块间的交互是至关重要的。根据调用方式的不同,可以将模块间的交互分为三种...
Java回调函数是编程中一种非常重要的设计模式,它允许一个对象在另一个对象完成特定操作后进行通知或执行相应的处理。这种机制使得代码更加灵活,解耦了调用者和被调用者的依赖关系,通常用于事件处理、异步编程、...
Java回调机制是编程中一种常见的设计模式,它允许一个对象在特定事件发生时通知另一个对象。在Java中,回调机制通常通过接口实现,一个对象(称为回调对象)实现了特定的接口,然后将这个对象作为参数传递给另一个...
理解并熟练运用回调机制,能够帮助开发者编写出更加灵活、可维护的代码。在实际开发中,合理地利用回调能够提高程序的性能和用户体验,同时也有助于遵循面向对象设计原则,实现模块间的良好协作。