学习编程的时候,经常会听到别人提起回调函数,但自己对这个概念一直似懂非懂,所以今天打算好好学习整理一下回调函数。 所谓回调,就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法。在c语言里回调函数是用指针完成的,由于java没有指针,我们用回调对象代替。下面,我们举一个例子来描述一下回调的过程:
送货员有一些货需要派送出去,但他不知道要什么时候进行派送,所以他打电话问经理,然而经理这个时候在做大保健,就和送货员说:等我把手头上一亿的项目忙完再说啦,你先去忙,等下可以发货的时候我打电话给你。于是送货员就继续等待,3秒后,经理call了送货员,送货员开始发货,整个过程结束。
在上面这个例子中,送货员就是A类,经理是B类,”经理通知送货员“就是方法C,送货员送货就是方法D。下面我们用代码实现一下:
//回调接口
Interface Callbackable{
pubilc void execute();
}
class A implements Callbackable{
private B b;
public A(B b){
this.b=b;
}
public void askManager(){
new Thread(new Runnable(){
@Override
public void run(){
b.callback(this);
}
});
doOtherThings();
public void execute(){
System.out.println("送货去咯");
}
}
public void doOtherThings(){
System.out.println("学习");
}
}
class B{
public void callback(Callbackable c){
//大保健中...
for(int i=0;i<3;i++)
System.out.println("啊~");
c.execute();
}
}