Java中的回調方法

引言

回調方法大家經常聽,但是可能有的同學並不是很清楚回調到底是怎麼回事,本文以一個簡單的例子,帶你瞭解回調方法。

概念

所謂回調方法,就是在調用方把一個需要被回調的方法作爲參數,傳遞給要調用的方法,被調用的方法執行完成後,通過該參數返回來調用此方法,作爲參數傳遞的該方法就稱作回調方法。

應用場景

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

回調示例代碼

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

public class Request {

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

}

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();
        }
        // 調用回調方法
        callBack.onResponse("請求完成,響應success");
    }

}

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

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

所以最後看到程序執行的結果是這樣的

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章