Java回调机制的示例分析

  介绍

这篇文章主要介绍了Java回调机制的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

首先说点题外话。为什么要写这篇文章,因为在看J.U.C包的FutureTask源码的时候,有一个做()方法,这是个抽象方法,用户实现它之后,FutureTask会在执行完后调用这个方法。这就是回调机制,回调的思想就是:

<李>

类调用类的B方法

<李>

类B的B方法执行完毕主动调用类的回调()方法

给出思想过于抽象,所以我会举出一个简单的实例(虽然简单,但是能说明问题),并总结Java实现回调的步骤。

实例基于知乎上一个解释什么是回调机制的回答。

描述:一个顾客入住了一个酒店,酒店提供叫醒服务,顾客由于第二天早晨有很重要的事情,所以使用了叫醒服务。让酒店工作人员在第二天早晨7点叫醒顾客。

在这个例子中,顾客是一个类,酒店是B类,顾客预订叫醒服务相当于一个调用了B的方法,酒店叫醒顾客相当于B调用了的回调方法(被叫醒)。

下面给出代码:

1,首先是回调接口:

package 回调;//回调接口   public  interface  CallBack  {   public 才能;void  beWakedUp ();   }

2,接着是顾客类

顾客类实现回调接口

package 回调;      public  class  Customer  implements  CallBack  {//才能顾客同时持有酒店类的对象,后面定义   private 才能Hotel 酒店;      public 才能;客户(Hotel 酒店),{   ,,,this.hotel =,酒店;   ,,}      @Override才能   public 才能;void  beWakedUp (), {   ,,,System.out.println(“被叫醒了“);   ,,}//才能,客户预约使用酒店的叫醒功能   public 才能;void  bookWakeService (), {   ,,,hotel.wakeService(这个);   ,,}//,才能省略get 集   }

3,酒店类

package 回调;      public  class  Hotel  {      public 才能;void  wakeService (CallBack 回调),{   ,,,System.out.println(“顾客预约了叫醒服务“);   ,,,try  {   ,,,,,//,模拟时间过了一晚上   ,,,,,thread . sleep (3000);   ,,,,,System.out.println(“时间过去了一夜“);   ,,,,,callBack.beWakedUp ();   ,,,},catch  (InterruptedException  e), {      ,,,,,e.printStackTrace ();   ,,,}   ,,}   }

4,测试主类

package 回调;      public  class  Main  {   ,,   public 才能;static  void  main (String [], args), {   ,,,Hotel  Hotel =, new 酒店();   ,,,Customer  Customer =, new 客户(酒店);   ,,,customer.bookWakeService ();   ,,}   }

输出结果为:

癑ava回调机制的示例分析"

不知道你对回调机制有没有进一步理解呢?

最后总结一下Java中实现回调机制的大体步骤吧:

<李>

定义回调接口调

<李>

类实现回调接口回调,同时持有类B的对象B

<李>

B类中有方法方法(回调cb)

<李>

由于一个中持有B的对象,所以一个可以调用B方法的方法,并将自身作为参数传入法(因为一个实现了回调接口,所以可以传入)。

<李>

方法方法执行完毕后,调用回调方法。

感谢你能够认真阅读完这篇文章,希望小编分享的“Java回调机制的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

Java回调机制的示例分析