UYOU
在很多场景,作为开发都会想到,在执行完毕一个任务的时候,能执行一个callback函数是多么好的事情。现在模拟一下这个情景:定义三个类。分别是主函数类。callback函数的接口类。业务处理类。在业务处理类中,处理完业务之后,执行一个callback函数。[java] view plain copypackage comz;public class Main {public static void main(String[] args) {new TestCallBack().compute(1000, new ComputeCallBack() {@Overridepublic void onComputeEnd() {System.out.println("end back!!!");}});}}这是主函数类。new了一个业务处理类来处理逻辑,并在处理完毕之后,执行callback函数。[java] view plain copypackage comz;public class TestCallBack {public void compute(int n, ComputeCallBack callback) {for (int i = 0; i < n; i++) {System.out.println(i);}callback.onComputeEnd();}}这是业务处理类。仅仅输出一些数字,然后执行回调函数。[java] view plain copypackage comz;public interface ComputeCallBack {public void onComputeEnd();}这是回调函数的接口。--------------------------------------运行上面的代码,就会在输出结束的时候调用在Main里面的callback函数,输出System.out.println("end back!!!");--------------------------------------这里的原理是:在主类中,新建业务类的时候,传递进去的第二个参数是一个实现了回调接口的匿名类对象。在业务类中,我们调用了这个对象的onComputeEnd方法。在执行onComputeEnd的时候,jvm会找到这个对象的函数实现并调用。于是就输出了end back!!!