在c或者c++中回调函数的定义:
程序在调用一个函数时,将自己的函数的地址作为参数传递给程序调用的函数时(那么这个自己的函数称回调函数)
java中没有指针,不能传递方法的地址,一般采用接口回调实现:把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。
实现回调的原理简介如下:
首先创建一个回调对象,然后再创建一个控制器对象,将回调对象需要被调用的方法告诉控制器对象。控制器对象负责检查某个场景是否出现或某个条件是否满足。当此场景出现或此条件满足时,自动调用回调对象的方法。
可以举个现实生活中的例子:
一读者想借《软件技术学习与实践》这本书,但这本书已被其他读者借走了。于是,读者与图书馆管理员间发生了以下对话:
读者:“我把我的电话号码告诉你,等书一到就马上通知我。”
管理员:“好的。另一读者把书还回来后,马上给您打电话,书我先帮您留着。”
在上述这个场景中,读者就是“回调对象”,管理员就是“控制器对象”,读者的电话号码就是“回调对象的方法”。
详细的实例如下:
1、创建一个回调接口:
1 //回调接口
2public interface icallback
3 {
4void run();
5 }
2、创建回调接口的实现类:
1 class callbackclass implements icallback
2 {public void run()
3 {
4//输出当前时间
5system.out.println(system.currenttimemillis() );
6 }
7 }
3、创建控制类
1 class controller
2 {
3public icallback callbackobject = null;// 引用回调对象
4scanner input = new scanner(system.in); //读取命令行输入
5public controller(icallback obj)
6{
7this.callbackobject = obj;
8}
9public void begin()
10{
11while(input.next() != null)//判断是否有输入
12{
13callbackobject.run();
14}
15}
16 }
运行程序:
1 class program
2 {
3static void main(string[] args)
4{
5//创建控制器对象,将提供给它的回调对象传入
6controller obj = new controller(new callbackclass());
7//启动控制器对象运行
8obj.begin();
9}
10 }
在控制器类中引用了回调对象,因此就能调用回调方法,当控制器进行某些判断之后(如:监听鼠标单击操作)就会自动调用回调方法!简易流程图如下:
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/