JAVA回調機制解析,java回調機制

來源:互聯網
上載者:User

JAVA回調機制解析,java回調機制

一、回調機制概述

    回調機制在JAVA代碼中一直遇到,但之前不懂其原理,幾乎都是繞著走。俗話說做不願意做的事情叫做突破,故誕生了該文章,算是新年的新氣象,新突破!    回調機制是什嗎?其實回調機制一直在我們身邊存在著,只是我們習慣了存在就未曾察覺,懂得其原理就很簡單了。    先打個比方,設定情境如下,教師,成績差學生A,成績好學生B,詳細步驟如下:   (1)教師讓學生A計算 一道題目 a+b=?   (2)學生A苦於技能cd(臣妾做不到),不會計算,請求學生B幫忙完成   (3)學生B根據學生A告訴他的 a和b的值計算出最後的答案,然後傳給學生A   (4)學生A得知到計算的答案,歡喜地告訴教師二、實現代碼解析    (1)先定義一個統一的介面
public interface CallBack {public void solve(int result);}
    (2)Class A的實現尤其注意的是,StudentA初始化時,需要傳入StudentB的對象,方便在請求協助的時候有指定的對象
public class StudentA implements CallBack{private StudentB mStuB;public StudentA(StudentB mStuB){this.mStuB = mStuB;}public void askQuestion(final int a,final int b){new Thread(new Runnable(){@Overridepublic void run() {// TODO Auto-generated method stubmStuB.executeMessage(StudentA.this, a, b);}}).start();}@Overridepublic void solve(int result) {// TODO Auto-generated method stubSystem.out.println(result);}}

(3)Class B的實現

public class StudentB {public void executeMessage(CallBack callBack,int a,int b){System.out.println("A的問題是:"+a +" + "+ b+"=?");int result = a + b;callBack.solve(result);}}

 (4)值的初始化

public class CallBackTest {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubint a = 1;int b = 1;StudentB mStuB = new StudentB();StudentA mStuA = new StudentA(mStuB);mStuA.askQuestion(a,b);}}

 

三、總結    參考網上經典的詮釋如下:
  • Class A實現介面CallBack callback——背景1
   public Class StudentA implements CallBack
  • Class A中包含一個class B的引用b ——背景2  
    Student A初始化的時候,傳入Student B的對象 mStuB,便於在執行askQuestion方法時,有指向的mStuB對象
  • class B有一個參數為callback的方法f(CallBack callback) ——背景3
    Student B在執行完請求後,需要回調告知StudentA,故需要通過callback變數來傳遞,使用了父類引用指向子類對象
  • A的對象a調用B的方法 f(CallBack callback) ——A類調用B類的某個方法 C
    mStuA.askQuestion(a,b) -> mStuB.executeMessage(StudentA.this, a, b)
  • 然後b就可以在f(CallBack callback)方法中調用A的方法 ——B類調用A類的某個方法D
    executeMessage() -> callBack.solve(result) (父類引用指向子類對象) 四、相關推薦http://blog.csdn.net/xiaanming/article/details/8703708/http://blog.csdn.net/pi9nc/article/details/23169357 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.