Java 回调函数
回调函数
我对回调函数的理解
假设:
我的车在家里,现在已经坏了,我打电话给万能的维修工,我告诉他,嘿!哥来帮我修一下我的车吧!但是,维修工告诉我没有现在空闲,等有空闲了我可以上门服务!我告诉维修工如果你有空了那么你就直接来我家给我修理吧。
换成程序而言:
如果我想让一个类,调用我自己声明的方法,那么我需要一个一个回调接口来让我自己的类去实现它。通过这样来实现回调函数。回调函数就好像是C#中的委托。Java中并没有类似的机制。可以利用接口来实现回调。
下面是一个小的Demo:
下面是一个简单的类包含了一个我想要进行回调的方法,实现了IWorkAble这个回调接口。
1 public class Caller implements IWorkAble{ 2 /* 3 * 这个是我想要被回调的方法 4 * */ 5 @Override 6 public void work() { 7 8 System.out.println("我是 call类的方法,我成功的让 call ,我成功的让 worker 调用!"); 9 } 10 11 }
下面是回调接口:
1 public interface IWorkAble { 2 //只是简单的定义了一个简单的方法 3 void work(); 4 }
下面是进行回调操作的类:
1 public class Worker { 2 3 //回调接口对象,会通过里氏转换法则经Caller对性赋值给这个变量,通过这个变量来完成回回调操作 4 IWorkAble workAble ; 5 6 /* 7 * 为对应的回调函数赋值 8 * */ 9 public void setWorkAble(IWorkAble iwa) { 10 this.workAble=iwa; 11 } 12 13 public void work() { 14 workAble.work(); 15 } 16 }
总结:
回调函数的实现其实使用了一种简单的动态代理模式,当想要执行的时候进行执行即可。