程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序。程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法。目的达到
//假设我是程序员A,以下是我的程序a:
public class Caller
{
public MyCallInterface mci;
//预留的回调函数
public void setCallfuc(MyCallInterface mci)
{
this.mci= mci;
}
public void call()
{
this.mci.method();
}
}
//我还需要定义一个接口,以便程序员B根据我的定义编写程序实现接口,即封装。
public interface MyCallInterface
{
//执行回调操作的方法
public void method();
}
//于是,程序员B只需要实现这个接口就能达到回调的目的了:
public class B implements MyCallInterface
{
public void method()
{
System.out.println("call me back!");
}
public static void main(String args[])
{
Caller call = new Caller();
call.setCallfuc(new B());//新生成的接口实现类对象赋给回调函数(Caller)中的变量
/**回调函数通过回调方法(call())调用接口实现类,此处重要的是"mc.method()",由mc找到了接口(MyCallInterface),再.method()就调用了实现类B中的method()方法*/
call.call(); // <=>call.mc.method(),但此处非static方法,不能直接调用
}
}
说白了就是回调函数通过跟其相配套的接口调用接口实现类的方法