用Java实现回调例程

2016-02-19 13:41 6 1 收藏

下面是个超简单的用Java实现回调例程教程,图老师小编精心挑选推荐,大家行行好,多给几个赞吧,小编吐血跪求~

【 tulaoshi.com - 编程语言 】

熟悉MS-Windows和XWindowSystem事件驱动编程模型的开发人员,习惯于传递在某种事件发生时调用(即“回调”)的函数指针。Java的面向对象模型目前并不支持方法指针,这样似乎就不可能使用这种很好的机制。但我们并不是一点办法都没有!

!-- frame contents -- !-- /frame contents --

Java的接口支持提供了一种获得回调的等价功能的机制。其技巧就是:定义一个简单接口,并在该接口中声明我们要调用的方法。

例如,假定我们希望在某个事件发生时得到通知。我们可以定义一个接口:

publicinterfaceInterestingEvent

{

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

//这仅是一个常规方法。因此假如需要,

//它可有返回值,也可接收参数。

publicvoidinterestingEvent();

}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

这使得我们可以控制实现该接口的类的任何对象。因此,我们不必关心任何外部类型信息。与在将C++代码用于Motif时使用窗口小部件的数据域来容纳对象指针的难以控制的C函数相比,这种方法要好得多。

发出事件信号的类必须等待实现了InterestingEvent接口的对象,并在适当时候调用interestingEvent()方法。

publicclassEventNotifier

{

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

privateInterestingEventie;

privatebooleansomethingHappened;

publicEventNotifier(InterestingEventevent)

{

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

//保存事件对象以备后用。

ie=event;

//还没有要报告的事件。

somethingHappened=false;

}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

//...

publicvoiddoWork()

{

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

//检查在别处设置的谓词。

if(somethingHappened)

{

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

//通过调用接口的这个方法发出事件信号。

ie.interestingEvent();

}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

//...

}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

//...

}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

在上例中,我使用somethingHappened谓词来跟踪是否应触发事件。在许多情况下,调用此方法足以保证向interestingEvent()发出信号。

希望接收事件通知的代码必须实现InterestingEvent接口,并将自身引用传递给事件通知程序。

publicclassCallMeimplementsInterestingEvent

{

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

privateEventNotifieren;


来源:http://www.tulaoshi.com/n/20160219/1604965.html

延伸阅读
标签: Web开发
    AJAX技术所提倡的无刷新回调,在原来的技术中需要写大量的JavaScript代码或使用一些AJAX框架,使得开发效率和可维护性大大降低。其实ASP.NET2.0中,已经提供了这样的接口,这就是ICallbackEventHandler。     关于ICallbackEventHandler网上已经有很多文章介绍了,这篇实为画蛇添足。 ICallbac...
  由于客户对速度和性能上的要求越来越变态,而数据量一天天的庞大,因此本人产生了数据的查询和分页完全由客户端回调来实现。想法看上去复杂,实现起来也不难。废话不多说,看程序吧。      一、存储过程      包头:      create or replace p...
冒泡排序的算法分析与改进 交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。 应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序。 代码如下: public class BubbleSort implements SortUtil.Sort{ public void sort(int[] data) { int temp; for(int i=0...
各位大侠可能会对263电子邮箱中的"上传附件"功能有印象,就是:在浏览 器中点击"浏览",弹出一个对话框,选中文件后,单击"确定",文件就被上传到了服务器端。 因为需要,就到网上找了几个控件,如SmartUpload等,但都觉得不好用,或者 说是不合用,决定自己做一个。近日看到网上也有人提问怎么上载文件,于...
标签: ASP
  程序名称:lybcon.inc 程序功能:数据库连接字符串 <% lybstr="Provider=SQLOLEDB.1;Password=密码;Persist Security Info=True;User ID=sa;Initial Catalog=数据库 名;Data Source=数据库服务器名;Connect Timeout=15" % 注意:一时疏忽,请使用.asp作为连接字符串文件名——有些服务器没有为.inc文件指定对应的映射,...

经验教程

690

收藏

39
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部