java--回調方法

來源:互聯網
上載者:User

標籤:

     在電腦程式設計中,回呼函數,或簡稱回調,是指通過函數參數傳遞到其它代碼的,某一塊可執行代碼的引用。這一設計允許了底層代碼調用在高層定義的子程式。

下面先寫一個小例子來瞭解回調。

1 類圖:


Boss類實現介面MyCallInterface,Worker中的setCallBack方法註冊回調對象。


2 建立一個回調介面,讓老闆告知幹完活如何找到他的方式:留下老闆辦公室地址:

<span style="font-family:KaiTi_GB2312;font-size:18px;">package com.tgb.callback;/** * 此介面為聯絡的方式,不論是電話號碼還是聯絡地址,作為 * 老闆都必須要實現此介面 * @author yingjie* */public interface MyCallInterface { public void  printName(); }</span>


3 建立回調對象,就是老闆本身,為了讓員工工作完成之後告訴老闆

<span style="font-family:KaiTi_GB2312;font-size:18px;">package com.tgb.callback;/**  * 老闆是作為上層應用身份出現的,下層應用(員工)是不知道  * 有哪些方法,因此他想被下層應用(員工)調用必須實現此介面  * @author yingjie *  */    public class Boss implements MyCallInterface{@Overridepublic void printName() {System.out.println("This is the Boss printName method");  }}</span>


4 建立控制類,也就是員工對象,他必須持有老闆的地址(回調介面)

<span style="font-family:KaiTi_GB2312;font-size:18px;">package com.tgb.callback;public class Worker {private MyCallInterface callInterface;          public Worker() {       }      //告訴老闆的連絡方式,也就是註冊     public void setCallBack(MyCallInterface callInterface) {          this.callInterface = callInterface;      }            public void callBoss() {          callInterface.printName();      }  }</span>


5 用戶端調用

<span style="font-family:KaiTi_GB2312;font-size:18px;">package com.tgb.callback;public class Client {      public static void main(String[] args) {          Worker worker = new Worker();          worker.setCallBack(new Boss());         worker.callBoss();  //告訴老闆幹完了    }  } </span>

6 為什麼使用回調方法?

    正常情況下開發人員使用已經定義好的API,這個過程叫調用。但是有時這樣不能滿足需求,就需要程式員註冊自己的程式,然後讓事先定義好多API在合適的時候調用註冊的方法,這叫回調。

    回調用於層間協作,上層將本層函數安裝在下層,這個函數就是回調,而下層在一定條件下觸發回調,例如作為一個驅動,是一個底層,他在收到一個資料時,除了完成本層的處理工作外,還將進行回調,將這個資料交給上層應用程式層來做進一步處理,這在分層的資料通訊中很普遍。 
    其實回調和API非常接近,他們的共性都是跨層調用的函數。但區別是API是低層提供給高層的調用,一般這個函數對高層都是已知的;而回調正好相反,他是高層提供給底層的調用,對於低層他是未知的,必須由高層進行安裝,這個安裝函數其實就是一個低層提供的API,安裝後低層不知道這個回調的名字,但它通過一個函數指標來儲存這個回調,在需要調用時,只需引用這個函數指標和相關的參數指標。


7 總結

     java中的回調就是獲得另一個對象的引用,然後調用對象中的方法。


java--回調方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.