文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

在Java中如何实现回调过程

2023-06-03 05:16

关注

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

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中如何实现回调过程”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯