Java回调函数详解
为了了解什么是回调函数,在网上查阅了如下资料,整理如下:
资料一:
首先说说什么叫回调函数?
在WINDOWS中,程序员想让系统DLL调用自己编写的一个方法,于是利用DLL当中回调函数(CALLBACK)的接口来编写程序,使它调用,这个就称为回调。在调用接口时,需要严格的按照定义的参数和方法调用,并且需要处理函数的异步,否则会导致程序的崩溃。
这样的解释似乎还是比较难懂,这里举个简单的例子:
程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序。程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法。目的达到。
在C/C++中,要用回调函数,被掉函数需要告诉调用者自己的指针地址,但在JAVA中没有指针,怎么办?我们可以通过接口(interface)来实现定义回调函数。
假设我是程序员A,以下是我的程序a:
public class Caller {
public MyCallInterface mc;
public void setCallfuc(MyCallInterface mc){
this.mc= mc;
}
public void call(){
this.mc.method();
}
}
我还需要定义一个接口,以便程序员B根据我的定义编写程序实现接口。
public interface MyCallInterface {
public void method();
}
于是,程序员B只需要实现这个接口就能达到回调的目的了:
public class B implements MyCallInterface {
public void method() {
System.out.println("谁来调用我啊。好寂寞!!");
}
public static void main(String args[]) {
Caller call = new Caller();
call.setCallfuc(new B());
call.call();
}
}