日期:2014-05-20  浏览次数:20800 次

JAVA中的回调函数
哪位大大告诉我下怎么理解回调函数啊,为什么要使用回调函数,我的理解是在A类中调用B类的methodB()方法,B类就调用A类的methodA()方法,可是这样理解不通啊,这样用的好处是什么?不这样用别的实现可以吗,在SSH整合中为什么用到HibernateTemplat进行分页?最好举个简单的例子!!联系实际最好

------解决方案--------------------
你饿了,想吃饭,就一会去问你妈一声"开饭没有啊?"这就正常函数调用.

但是今天你妈包饺子,花的时间比较长,你跑啊跑啊,就烦了.于是你给你妈说,我先出去玩会,开饭的时候打我手机.等过了一阵,你妈给你打电话说"开饭啦,快回来吃饭吧!"

其中,你告诉你妈打手机找你,就是个你把回调函数句柄保存到你妈的动作.你妈打电话叫你,就是个回调过程.


------解决方案--------------------

public class TestEat{
public static void main(String args[]){
Child child = new Child();
Mum mum = new Mum();
child.myMum(mum);
mum.makeFood();
child.play();
mum.cookOk();

}

}
class Mum{
Child[] child= new Child[3];
public void makeFood(){
System.out.print("晚上的饭食包饺子,");
System.out.println("要花很长时间 ");
}
public void tellChild(call call){
call.callPerson();
}
public void accept(Child child) {
// TODO Auto-generated method stub
System.out.println("妈妈知道了");
this.child[0]=child;
}

public void cookOk( ){
for(int i=0;i<1000000;i++){}
System.out.println("饭已ok了,可以密西了");
this.child[0].callPerson();
}
}
class Child implements call {
Mum mum;
public void play(){
System.out.println("儿子出去玩了");
tellMun(this.mum);
}
public void tellMun(Mum mum){
System.out.println("告诉妈妈饭好了给我打电话");
mum.accept(this);
}
//回调函数实现
public void callPerson() {
// TODO Auto-generated method stub
usePhone();
System.out.println("贾君鹏,妈妈喊你回家吃饭");
}
public void myMum(Mum mum){
this.mum=mum;
}
public void usePhone(){
System.out.println("电话铃响了");
}
}
interface call{
//回调函数
public void callPerson();
}
我试着写了一下,不知道对不对,大家参考一下