http://www-128.ibm.com/developerworks/cn/linux/l-callback/?ca=dwcn-newsletter-linux
package test;
interface ICallBack{void postExec();}
/*相当于副线程,执行时得到了主线程传入的地址*/
class A{
private ICallBack callBack;
public void setCallBack(ICallBack callBack){ //A拥有setCallBack()
this.callBack=callBack;
}
/**虽然没有实现接口ICallBack,但仍可用接口的方法,
接口是在CallBack中实现的,其实根本不必关心它在哪里实现的**/
public void doSth(){callBack.postExec();//随时回调A实现接口ICallBack的方法
}
}
/**CallBack实现接口ICallBack(),运行时调用A的setCallBack(),相当于主线程**/
public class CallBack implements ICallBack{
public void postExec(){System.out.println("callback");};
public static void main(String[] args){
A foo=new A();
foo.setCallBack(new CallBack()); //自身传入参数,相当于将自身指针传给了foo
foo.doSth();//此时foo中已经有了CallBack对象
}
}