一、定义   

    回调就是把函数指针做为参数传入,如函数A做为参数传入函数B,由B函数决定何时、何地调用函数A

function A()

function B(A)
    {
         call A()
     }

就是把A传给B,由B决定什么时候调用。

二、用途

一个通俗的例子如下:

你饿了,想吃饭,就一会去问你妈一声"开饭没有啊?"这就正常函数调用。但是今天你妈包饺子,,花的时间比较长,你跑啊跑啊,就烦了。于是你给你妈说,我先出去玩会,开饭的时候打我手机。等过了一阵,你妈给你打电话说"开饭啦,快回来吃饭吧!"。其中,你告诉你妈打手机找你,就是你把回调函数句柄保存到你妈的动作。你妈打电话叫你,就是个回调过程。

三、java中实现回调

java中如何实现回调?答案是接口方式:

1、定义一个接口phone,妈妈通过这个接口来通知孩子

package test1;

public interface phone {
public void eat();
}

2、定义一个孩子类,实现上面这个接口,供妈妈调用

package test1;

public class child implements phone
{
public void eat()
{
System.out.println("孩子吃的很happy~~~");
}
}

3、定义一个妈妈类

package test1;

public class mum {
phone phone1;
//将child作为参数传进来,这里传进来的实际是接口phone,由于child实现了phone,因此相当于将child作为参数传递了进来
public void setCallback(phone phone1)
{
this.phone1 =phone1;
} //通知child
public void callChild() throws Exception
{
System.out.println("开始包饺子");
Thread.sleep(3000);
System.out.println("饺子包好了"); System.out.println("打电话给孩子,过来吃饺子了");
phone1.eat();
} //主函数
public static void main(String[] args) throws Exception
{
child child1=new child();
mum mum1=new mum();
mum1.setCallback(child1);
mum1.callChild();
}
}

运行mum类,输出如下:

开始包饺子
饺子包好了
打电话给孩子,过来吃饺子了
孩子吃的很happy~~~

最新文章

  1. RESTful API你怎么看?
  2. IIS 500.19 错误
  3. Latex转换之PDF
  4. du -sg 和df -g 所看的文件系统大小不一致
  5. 国内Jquery CDN
  6. Android FastJson解析
  7. memcache锁
  8. MySQL(3)-索引
  9. 一次完整的http的请求过程
  10. C#-委托delegate
  11. C# 保存屏幕截图
  12. chown nagios:nagios -R /var/lib/php/
  13. UML建模——用例图(Use Case Diagram)
  14. easyui textbox 获取焦点
  15. 标记化结构初始化语法 在结构体成员前加上小数点 如 “.open .write .close ”C99编译器 .
  16. tsconfig.json
  17. 【数字图像处理】使用kmeans算法对TrueColor图片进行优化
  18. 【转载】MongoDB集群和实战详解
  19. 通过代码去执行testNG用例
  20. Array.prototype.slice用法详解

热门文章

  1. 027. asp.net中数据绑定控件之 GridView控件
  2. codevs-1447取出整数的一部分
  3. php面向对象中的魔术方法中文说明
  4. css之opacity
  5. Swift中的HTTP请求
  6. js跳转到页面中指定的hash
  7. JDBC - Oracle PreparedStatement (GeneratedKey kind) ArrayIndexOutOfBoundsException
  8. Myisam and InnoDB
  9. Keepalived+MySQL实现高可用(转)
  10. WCF学习心得------(二)设计和实现服务协定