在Java中如何实现回调过程

这篇文章主要介绍了在Java中如何实现回调过程,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

成都创新互联公司于2013年成立,是专业互联网技术服务公司,拥有项目成都网站制作、网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元商南做网站,已为上家服务,为商南各地企业和个人服务,联系电话:13518219792

在Java中实现回调过程XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

在Java使用接口来实现同样功能的回调函数

摘要:

Java接口提供了一个很好的方法来实现回调函数。如果你习惯于在事件驱动的编程模型中,通过传递函数指针来调用方法达到目的的话,那么你就会喜欢这个技巧。

在MS-windows或者X-Window系统的事件驱动模型中,当某些事件发生的时候,开发人员已经熟悉通过传递函数指针来调用处理方法。而在Java的面向对象的模型中,不能支持这种方法,因而看起来好像排除了使用这种比较舒服的机制,但事实并非如此。

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

举个例子来说,假设当一个事件发生的时候,我们想它被通知,那么我们定义一个接口:

public interface InterestingEvent

{

  // This is just a regular method so it can return something or

  // take arguments if you like.

  public void interestingEvent ();

}

这就给我们一个控制实现了该接口的所有类的对象的控制点。因此,我们不需要关心任何和自己相关的其它外界的类型信息。这种方法比C函数更好,因为在C++风格的代码中,需要指定一个数据域来保存对象指针,而Java中这种实现并不需要。

发出事件的类需要对象实现InterestingEvent接口,然后调用接口中的interestingEvent ()方法。

public class EventNotifier

{

  private InterestingEvent ie;

private boolean somethingHappened;

  public EventNotifier (InterestingEvent event)

{

// Save the event object for later use.

ie = event;

// Nothing to report yet.

somethingHappened = false;

}

  //... 

  public void doWork ()

{

// Check the predicate, which is set elsewhere.

if (somethingHappened)

  {

  // Signal the even by invoking the interface's method.

  ie.interestingEvent ();

  }

//...

  }

  // ...

}

在这个例子中,我们使用了somethingHappened这个标志来跟踪是否事件应该被激发。在许多事例中,被调用的方法能够激发interestingEvent()方法才是正确的。

希望收到事件通知的代码必须实现InterestingEvent接口,并且正确的传递自身的引用到事件通知器。

public class CallMe implements InterestingEvent

{

private EventNotifier en;

  public CallMe ()

{

// Create the event notifier and pass ourself to it.

en = new EventNotifier (this);

}

  // Define the actual handler for the event.

  public void interestingEvent ()

{

// Wow!  Something really interesting must have occurred!

// Do something...

}

  //...

}

感谢你能够认真阅读完这篇文章,希望小编分享的“在Java中如何实现回调过程”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!


分享题目:在Java中如何实现回调过程
本文URL:http://pwwzsj.com/article/gsicdd.html