回调函数的定义:
使用回调函数实际上就是在调用某个函数(一般是API函数)时。将自己的一个函数(这个函数为回调函数)的地址作为參数传递给那个函数。而那个函数在须要的时候。利用传递的地址调用回调函数。这时你能够利用这个机会在回调函数中处理消息或完毕一定的操作。
说白了就是将一个你自已的一个函数A的函数指针传给另外一个函数B(该函数接受你传过来的函数指针);然后在B中调用这个函数,那么就完毕了一次回调
以下别人用c写的一个样例:
<span style="color:#000000;">#include <stdio.h> void printWelcome(int len) { printf("欢迎欢迎 -- %d/n", len); } void printGoodbye(int len) { printf("送客送客 -- %d/n", len); } void callback(int times, void (* print)(int)) { int i; for (i = 0; i < times; ++i) { print(i); } printf("/n我不知道你是迎客还是送客!/n/n"); } void main(void) { callback(10, printWelcome);//这里的</span><span style="color:#000000;">printWelcome就是回调函数</span><span style="color:#000000;"> callback(10, printGoodbye); printWelcome(5); }</span>以下我用java再写一个简单的样例:
<span style="color:#000000;">public class Caller { private IMyCaller caller; public Caller(IMyCaller caller){ this.caller = caller; } public void call(){ caller.method();//调用回调函数 } }</span>接口
<span style="color:#000000;">public interface IMyCaller { public abstract void method(); } </span>实现接口
<span style="color:#000000;"> public class MyCallerImpl implements IMyCaller{ @Override public void method() { System.out.println("This is 回调函数"); } public static void main(String[] args) { Caller call = new Caller(new MyCallerImpl());//将自已的一个实例传入 call.call();//实现回调 } }</span>