JAVA的回调方法和C++的还是有区别的,最近在做android的项目,很多东西都用到了回调方式,抽空来学习一下。
举个例子,A有事情找B,而B比较忙,暂时没法沟通,于是A留下一个地址给B,然后B通过这个地址和A联系,这个地址就是一个接口函数。
回调方法的接口:
public interface MyCallInterface {
//回调方法
public void method(int value);
}
有了这个几口,A怎么把事情告诉给B呢,这就需要A有个方法,来调用B中的方法。
回调方法的调用:
public class caller {
public MyCallInterface mc;
public int sum1 = 10;
public void setCallfuc(MyCallInterface mc)
{
this.mc = mc;
}
public void call(int value)
{
int sum = value + sum1;
this.mc.method(sum);
}
}
接着B有空的时候,他怎么处理来自A的事情呢?B先实现了接口函数的方法,然后调用A的call()方法处理来自A的数据。
public class B implements MyCallInterface {
public static int B_value = 11;
public void method(int sum)
{
System.out.println(sum);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
caller call = new caller();
call.setCallfuc(new B());
call.call(B_value);
}
}
从上面的程序可以看出,B调用A的call()函数,并把自己的值传给A,A处理数据之后调用B的method(),将B和A传入的数据进行处理。