引言
回調方法大家經常聽,但是可能有的同學並不是很清楚回調到底是怎麼回事,本文以一個簡單的例子,帶你瞭解回調方法。
概念
所謂回調方法,就是在調用方把一個需要被回調的方法作爲參數,傳遞給要調用的方法,被調用的方法執行完成後,通過該參數返回來調用此方法,作爲參數傳遞的該方法就稱作回調方法。
應用場景
在項目開發中,通常會碰到各個模塊或者對象之間的消息傳遞,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”) 這一句就是在調用回調方法了
所以最後看到程序執行的結果是這樣的
要想對回調方法有更深刻的體會,還是得在項目中有實際的運用
有不對的地方還望大家不吝賜教,謝謝~
最後,我對回調總結一句話就是 “好了告訴我”,也就是所謂的主動通知