Java中的回调方法

 在C和C++中,回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。而那个函数在需要的时候,利用传递的地址调用回调函数,这时你可以利用这个机会在回调函数中处理消息或完成一定的操作。 
 

 

    在Java中,就是类A调用类B中的某个方法b,然后类B又在某个时候反过来调用类A中的某个方法a,对于A来说,这个a方法便叫做回调方法(在Java中我习惯称它为回调方法),当然,A类和B类可以合并为一个。

 

    回调就像23种经典设计模式一样,也是一种通用的模式,每种语言都可以实现该模式,只不过所采取的方法不一样罢了!C和C++是通过“函数指针”来调用处理方法的,而在Java的面向对象模型中,不支持这种方法,因而看起来好像排除了使用这种比较舒服的机制,但事实并非如此。


   Java的接口提供了一种很好的机制来让我们达到和回调相同的效果。这个诀窍就在于定义一个简单的接口,在接口之中定义一个我们希望回调的方法。如以下代码:

 

  

   pubilc interface CallBack{

         public void callbackMethod();           

   }

 

   public class A implements CallBack{  // A实现接口CallBack

       B b = new B();

       public void do(){

          b.doSomething(this); // A运行时调用B中doSomething方法,以自身传入参数,B已取得A,可以随时回调A所实现的CallBack接口中的方法

                        

       public void callbackMethod(){  // 对A来说,该方法就是回调方法

           System.out.println("callbackMethod is executing!");               

                 

   }

 

   public class B{

      public void doSomething(CallBack cb){  // B拥有一个参数为CallBack接口类型的方法

       System.out.println(“I am processing my affairs… ”);

        System.out.println(“then, I need invoke callbackMethod…”);

        cb.callbackMethod();

        

   }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值