java 回调函数详解

http://www.cnblogs.com/leon19870907/articles/2024077.html

还可参考http://blog.csdn.net/fengyifei11228/article/details/5729445


在C或者C++中回调函数的定义:

程序在调用一个函数时,将自己的函数的地址作为参数传递给程序调用的函数时(那么这个自己的函数称回调函数)


Java中没有指针,不能传递方法的地址,一般采用接口回调实现把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。

实现回调的原理简介如下

首先创建一个回调对象,然后再创建一个控制器对象,将回调对象需要被调用的方法告诉控制器对象。控制器对象负责检查某个场景是否出现或某个条件是否满足。当此场景出现或此条件满足时,自动调用回调对象的方法

可以举个现实生活中的例子:

一读者想借《软件技术学习与实践》这本书,但这本书已被其他读者借走了。于是,读者与图书馆管理员间发生了以下对话:

读者:“我把我的电话号码告诉你,等书一到就马上通知我。”

管理员:“好的。另一读者把书还回来后,马上给您打电话,书我先帮您留着。”

在上述这个场景中,读者就是“回调对象”,管理员就是“控制器对象”,读者的电话号码就是“回调对象的方法”

详细的实例如下:

1、创建一个回调接口:

1  // 回调接口
2    public   interface  ICallBack
3 
4  void  run();
5  }

2、创建回调接口的实现类:

复制代码
1  class  CallBackClass  implements  ICallBack
2  { public   void  run()
3 
4    // 输出当前时间
5     System.out.println(System.currentTimeMillis() );
6  }
7  }
复制代码

3、创建控制类

复制代码
1  class  Controller
2  {
3  public  ICallBack CallBackObject  =   null ; //  引用回调对象
4  Scanner input  =   new  Scanner(System.in);  // 读取命令行输入
5  public  Controller(ICallBack obj)
6  {
7  this .CallBackObject  =  obj;
8  }
9  public   void  Begin()
10  {
11  while (input.next()  !=   null ) // 判断是否有输入
12  {
13  CallBackObject.run();
14  }
15  }
16  }
复制代码

运行程序:

复制代码
1  class  Program
2  {
3  static   void  Main(string[] args)
4  {
5  // 创建控制器对象,将提供给它的回调对象传入
6  Controller obj  =   new  Controller( new  CallBackClass());
7  // 启动控制器对象运行
8  obj.Begin();
9  }
10  }
复制代码

在控制器类中引用了回调对象,因此就能调用回调方法,当控制器进行某些判断之后(如:监听鼠标单击操作)就会自动调用回调方法!简易流程图如下:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值