java中的回調(diào)函數(shù)_第1頁(yè)
java中的回調(diào)函數(shù)_第2頁(yè)
java中的回調(diào)函數(shù)_第3頁(yè)
java中的回調(diào)函數(shù)_第4頁(yè)
java中的回調(diào)函數(shù)_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、java中的回調(diào)函數(shù)java中的回調(diào)函數(shù)利用接口在WINDOWS中,程序員想讓系統(tǒng)DLL調(diào)用自己編寫的一個(gè)方法,于是利用DLL當(dāng)中調(diào)函數(shù)(CALLBACK)的接口來(lái)編寫程序,使它調(diào)用,這個(gè)就稱為調(diào)。在調(diào)用接口時(shí),需要嚴(yán)格的按照定義的參數(shù)和方法調(diào)用,并且需要處理函數(shù)的異步,否則會(huì)導(dǎo)致程序的崩潰。這樣的解釋似乎還是比較難懂,這里舉個(gè)簡(jiǎn)單的例子,程序員A寫了一段程序(程序a),其中預(yù)留有調(diào)函數(shù)接口,并封裝好了該程序。程序員要讓a調(diào)用自己的程序b中的一個(gè)方法,于是,他通過(guò)a中的接口調(diào)自己b中的方法。目的達(dá)至!L在C/C+中,要用調(diào)函數(shù),被調(diào)函數(shù)需要告訴調(diào)用者自己的指針地址,但在JAVA中沒(méi)有指針,怎么

2、辦?我們可以通過(guò)接口假設(shè)我是程序員A,以下是我的程序a:publicclassCallerprivateMyCalllnterfaceme;publicCaller()publicsetl(MyCalllnterfacemc)this.mc=mc;)publiccall()mc.fuc();/Caller的調(diào)用方法)這里需要定義一個(gè)接口,以便程序員B根據(jù)我的定義編寫程序?qū)崿F(xiàn)接口。publicinterfaceMyCalllnterfacepublicvoidfuc();)于是,程序員B只需要實(shí)現(xiàn)這個(gè)接口就能達(dá)到回調(diào)的目的了:publicclasscalleeimplementsMyCallln

3、terfacepublicvoidfuc()/dosomethingF面是調(diào)用過(guò)程:publicclasscallbackspublicstaticvoidmain(Stringargs)Calleecl=newCalleeQ;Callercaller=newCallerO;caller.setl(cl);caller.callO;)在以上代碼中,caller是調(diào)用者,callee是被調(diào)用者,callbacks表示調(diào)用過(guò)程。先產(chǎn)生了Callee對(duì)象,利用這個(gè)callee對(duì)象產(chǎn)生的Caller對(duì)象則攜帶了一些信息即與Callee對(duì)象的關(guān)聯(lián)),所以Caller對(duì)象可以利用官己的call方法調(diào)用Ca

4、llee的方法。這就是整調(diào)過(guò)程°B產(chǎn)生A,則A具有調(diào)用B的方法的能力。caller中具有的接口引用很關(guān)鍵。實(shí)現(xiàn)了此接口引用的callee只需將自己的引用傳給Caller。一般來(lái)說(shuō)分為以下幾步:1 .聲明回調(diào)函數(shù)的統(tǒng)一接口interfaceA,包含方法fucO;2 .在調(diào)用類caller內(nèi)將該接口設(shè)置為私有成員privateAXXX;3 .在caller內(nèi)提供一個(gè)public方法,可以將外部該接口A的實(shí)現(xiàn)類的引用通過(guò)形參傳給XXX;4 .caller的某個(gè)方法call。中會(huì)用到XXX.fucO方法;5 .在caller的實(shí)例中,將實(shí)現(xiàn)了A接口的對(duì)象的引用傳給callerf后調(diào)用call

5、。方法;注意:步驟3中亦可以使用Caller的構(gòu)造函數(shù)直接實(shí)現(xiàn)。JAVA排序的compare接口:1. interfaceCompare2.booleanlessThan(ObjectlhsfObjectrhs);3.booleanlessThanOrEqual(ObjectIhs,Objectrhs);4. 5.6. importjava.util.*;7.8.publicclassSortVectorextendsVector(9.privateComparecompare;/私有接口成員10.publicSortVector(Comparecomp)ILcompare=comp;12.

6、)13. publicvoidsortO14. quickSort(OfsizeO-1);15. 16.privatevoidquickSort(intleftfintright)(17.18.ht);19.20.21.if(right>left)Objectol=elementAt(riginti=left-1;intj=right;while也ue)22.while(compare.lessThan(23.elementAt(+ + i)f ol)24. ;25. while(j>0)26. if(compare.lessThanOrEqual(27. elementAt(-j)fol)28. break;29. if(i>=j)break;30. sw叩(i,j);31. )32. swap(ifright);33. quickSort(leftfi-1);34. quickSort(i+lfright);36.37.private void swap(int loci, intIoc

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論