小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

JAVA中的回調(diào)函數(shù)

 liang1234_ 2019-02-22
JAVA中的回調(diào)函數(shù)
    在以前的JAVA學習過程當中,不太注意理論知識的學習,所以在閱讀thinking in java的時候,就沒有太注意其中關于回調(diào)函數(shù)的介紹。今天,在閱讀一段關于網(wǎng)絡信使的源代碼時,發(fā)現(xiàn)了有關回調(diào)函數(shù)的使用,對他產(chǎn)生了研究的興趣,不過該源代碼中關于回調(diào)函數(shù)的介紹很模糊,在該程序當中所使用的回調(diào)函數(shù)意義不大(該源代碼很簡單,而且不是很健壯)。
    首先說說什么叫回調(diào)函數(shù)(網(wǎng)上查詢了一些資料,對它的解說還是比較全面,但是很難理解,特別是在JAVA當中實現(xiàn)回調(diào)函數(shù),不理解什么叫回調(diào)函數(shù)的,就更難實現(xiàn)了),以下介紹根據(jù)網(wǎng)上的資料整合而成。
    在WINDOWS中,程序員想讓系統(tǒng)DLL調(diào)用自己編寫的一個方法,于是利用DLL當中回調(diào)函數(shù)(CALLBACK)的接口來編寫程序,使它調(diào)用,這個就稱為回調(diào)。在調(diào)用接口時,需要嚴格的按照定義的參數(shù)和方法調(diào)用,并且需要處理函數(shù)的異步,否則會導致程序的崩潰。這樣的解釋似乎還是比較難懂,這里舉個簡單的例子,程序員A寫了一段程序(程序a),其中預留有回調(diào)函數(shù)接口,并封裝好了該程序。程序員B要讓a調(diào)用自己的程序b中的一個方法,于是,他通過a中的接口回調(diào)自己b中的方法。目的達到。在C/C++中,要用回調(diào)函數(shù),被掉函數(shù)需要告訴調(diào)用者自己的指針地址,但在JAVA中沒有指針,怎么辦?我們可以通過接口(interface)來實現(xiàn)定義回調(diào)函數(shù)。
    假設我是程序員A,以下是我的程序a:
public class Caller{
private MyCallInterface mcl;
public Caller(){}
public setCallfuc(MyCallInterface mc){
  this.mc=mc;
}
public call(){
  my.fuc();
}
}
    我還需要定義一個接口,以便程序員B根據(jù)我的定義編寫程序?qū)崿F(xiàn)接口。
public interface MyCallInterface{
public void fuc();
}
    于是,程序員B只需要實現(xiàn)這個接口就能達到回調(diào)的目的了:
public class B implements MyCallInterface{
public void fuc(){
  //do something
}
public static void main(String args[]){
  Caller call=new Caller();
  call.setCallfuc(this);
}
}
 

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多