Java中的回調(diào)方法

引言

回調(diào)方法大家經(jīng)常聽,但是可能有的同學并不是很清楚回調(diào)到底是怎么回事,本文以一個簡單的例子,帶你了解回調(diào)方法。

概念

所謂回調(diào)方法,就是在調(diào)用方把一個需要被回調(diào)的方法作為參數(shù),傳遞給要調(diào)用的方法,被調(diào)用的方法執(zhí)行完成后,通過該參數(shù)返回來調(diào)用此方法,作為參數(shù)傳遞的該方法就稱作回調(diào)方法。

應用場景

在項目開發(fā)中,通常會碰到各個模塊或者對象之間的消息傳遞,A模塊的某些方法,需要在B模塊滿足某些條件下來主動通知并調(diào)用A模塊的這些方法,這就是比較典型的回調(diào)應用場景。

回調(diào)示例代碼

文字描述可能有點生硬,下面來看代碼就一目了然了
這里簡單的使用了Java 8 Lambda的寫法,還沒有了解過的同學可以在網(wǎng)上找些資料

public class Request {

    public static void main(String[] args) {
        // 起一個線程,調(diào)用Response的handle方法
        new Thread(() ->
            new Response().handle("handle something",
                    data -> System.out.println("回調(diào)方法,收到數(shù)據(jù) :" + data))
        ).start();
        System.out.println("異步回調(diào),先做其他事情");
    }

}

class Response {

    public void handle(String msg, CallBack callBack) {
        System.out.println("接收到的msg = " + msg);
        try {
            // sleep 3 秒,模擬滿足某些條件
            TimeUnit.SECONDS.sleep(3);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        // 調(diào)用回調(diào)方法
        callBack.onResponse("請求完成,響應success");
    }

}

// 回調(diào)接口
interface CallBack {
    void onResponse(String data);
}

1、先定義一個回調(diào)接口CallBack,定義好回調(diào)方法onResonse(String data);
2、Response類中的handle方法有兩個參數(shù),一個字符串,一個接收Request的回調(diào)方法
3、Request類新啟動一個線程去調(diào)用Resonpse的handle方法
第二個參數(shù)就是callBack的實現(xiàn),也就是真正的回調(diào)方法
4、最后,callBack.onResponse("請求完成,響應success") 這一句就是在調(diào)用回調(diào)方法了

所以最后看到程序執(zhí)行的結(jié)果是這樣的

要想對回調(diào)方法有更深刻的體會,還是得在項目中有實際的運用
有不對的地方還望大家不吝賜教,謝謝~
最后,我對回調(diào)總結(jié)一句話就是 “好了告訴我”,也就是所謂的主動通知

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • github地址,歡迎大家提交更新。 express() express()用來創(chuàng)建一個Express的程序。ex...
    Programmer客棧閱讀 2,827評論 0 1
  • Address:https://www.zybuluo.com/XiangZhou/note/208532 Exp...
    天蠍蒗漫閱讀 11,623評論 2 55
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,555評論 19 139
  • 姓名:舒微媛 日期:2018年6月14日 名稱:寧波萬尚 六項精進364期努力一組(學委)403期志工 寧波盛禾塾...
    夏曉薇閱讀 262評論 0 0
  • 臨文徵明 《離騷經(jīng)》1 先秦:屈原 帝高陽之苗裔兮,朕皇考曰伯庸。 攝提貞於孟陬兮,惟庚寅吾以降。 皇覽揆餘初度兮...
    墨影teresa閱讀 1,410評論 10 28

友情鏈接更多精彩內(nèi)容