免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
java中的回调函数利用接口在WINDOWS中,程序员想让系统DLL调用自己编写的一个方法,于是利用DLL当中回调函数(CALLBACK)的接口来编写程序,使它调用,这个就称为回调。在调用接口时,需要严格的按照定义的参数和方法调用,并且需要处理函数的异步,否则会导致程序的崩溃。这样的解释似乎还是比较难懂,这里举个简单的例子,程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序。程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法。目的达到。在C/C+中,要用回调函数,被调函数需要告诉调用者自己的指针地址,但在JAVA中没有指针,怎么办?我们可以通过接口(interface)来实现定义回调函数。假设我是程序员A,以下是我的程序a:publicclassCallerprivateMyCallInterfacemc;publicCaller()publicsetI(MyCallInterfacemc)this.mc=mc;publiccall()mc.fuc();/Caller的调用方法这里需要定义一个接口,以便程序员B根据我的定义编写程序实现接口。publicinterfaceMyCallInterfacepublicvoidfuc();于是,程序员B只需要实现这个接口就能达到回调的目的了:publicclasscalleeimplementsMyCallInterfacepublicvoidfuc()/dosomething下面是调用过程:publicclasscallbackspublicstaticvoidmain(Stringargs)Calleec1=newCallee();Callercaller=newCaller();caller.setI(c1);caller.call();在以上代码中,caller是调用者,callee是被调用者,callbacks表示调用过程。先产生了Callee对象,利用这个callee对象产生的Caller对象则携带了一些信息(即与Callee对象的关联),所以Caller对象可以利用自己的call方法调用Callee的方法。这就是整个回调过程。B产生A,则A具有调用B的方法的能力。caller中具有的接口引用很关键。实现了此接口引用的callee只需将自己的引用传给Caller。一般来说分为以下几步:1. 声明回调函数的统一接口interfaceA,包含方法fuc();2. 在调用类caller内将该接口设置为私有成员privateAXXX;3. 在caller内提供一个public方法,可以将外部“该接口A的实现类的引用”通过形参传给XXX;4. caller的某个方法call()中会用到XXX.fuc()方法;5. 在caller的实例中,将实现了A接口的对象的引用传给caller,后调用call()方法;注意:步骤3中亦可以使用Caller的构造函数直接实现。JAVA排序的compare接口:1. interfaceCompare2. booleanlessThan(Objectlhs,Objectrhs);3. booleanlessThanOrEqual(Objectlhs,Objectrhs);4. 5. 6. importjava.util.*;7. 8. publicclassSortVectorextendsVector9. privateComparecompare;/私有接口成员10. publicSortVector(Comparecomp)11. compare=comp;12. 13. publicvoidsort()14. quickSort(0,size()-1);15. 16. privatevoidquickSort(intleft,intright)17. if(rightleft)18. Objecto1=elementAt(right);19. inti=left-1;20. intj=right;21. while(true)22. while(compare.lessThan(23. elementAt(+i),o1)24. ;25. while(j0)26. if(compare.lessThanOrEqual(27. elementAt(-j),o1)28. break;29. if(i=j)break;30. swap(i,j);31. 32. swap(i,right);33. quickSort(left,i-1);34. quickSort(i+1,right);35. 36. 37. privatevoidswap(intloc1,intloc2)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年萍乡辅警招聘考试题库附答案详解(预热题)
- 2024年攀枝花辅警协警招聘考试真题含答案详解(能力提升)
- 2025饭店转让合同示范文本
- 2025年浙江省土地使用权转让合同(官方范本)
- 2024年江苏辅警招聘考试真题含答案详解(预热题)
- 2025办公室短期租赁合同范本
- 2025年居间服务合同模板
- DB12-T 1129-2022 高速公路气象预报预警服务规范
- 2024年湛江辅警协警招聘考试真题完整参考答案详解
- 课外阅读检测题库及答案
- 二手车鉴定与评估课程说课
- 学前教育机构社区教案
- 2025河南航空港投资集团校园招聘笔试考试参考题库及答案解析
- 2025至2030中国水运行业发展趋势分析与未来投资战略咨询研究报告
- 2025贵州毕节市中医医院招聘暨人才引进编外聘用专业技术人员78人考试笔试备考试题及答案解析
- 2025税务师考试《税法一》冲关速记
- 直播电商职业知识培训课件
- 药学专业个人简历模板
- 全国大学生数学建模竞赛2025年本科组赛题分析试卷
- 轮状病毒疫苗研发进展与接种应用指南
- 云南省国省干线公路养护管理模式优化:基于公路局视角的深度剖析与创新路径
评论
0/150
提交评论