
引言
回調(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é)一句話就是 “好了告訴我”,也就是所謂的主動通知