1、什麼是回調函數
回調函數,是一個通過函數指針調用的函數。如果你把函數的指針(地址)作爲參數傳遞給另一個函數,當這個指針被用來調用其所指向的函數時,我們就說這是回調函數。在Java中,指針即所謂的引用。回調函數不是由該函數的實現方直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用於對該事件或條件進行響應。
回調方法 是 任何一個 被 以該回調方法爲其第一個參數 的 其它方法 調用 的方法。很多時候,回調是一個當某些事件發生時被調用的方法。
2、應用場景
事件驅動機制
舉例:甲僱傭乙修車;然後甲就去做其他事情;乙完成後通知甲:車已修好,請來取。即甲沒必要一直等待乙修完車。
3、代碼示例
1、測試類
package com.callBack;
public class CallBckTest {
public static void main(String[] args) {
MainBusiness mainBusiness = new MainBusiness();
System.out.println("*********具體實現類實現的回調方法_固定*********");
mainBusiness.execute(new CallbackServiceImpl());
System.out.println("*********匿名內部類實現的回調方法_靈活*********");
mainBusiness.execute(new CallbackService() {
public void callBackFunc() {
System.out.println("匿名內部類回調函數開始執行...");
System.out.println("匿名內部類回調函數結束執行...\n");
}
});
}
}
2、業務類與方法
package com.callBack;
public class MainBusiness {
private CallbackService callback;
public void execute(CallbackService callback) {
this.callback = callback;
callBack();
}
public void callBack() {
callback.callBackFunc();
}
}
3、回調函數接口
package com.callBack;
//回調函數之接口與方法
public interface CallbackService {
void callBackFunc();
}
4、回調函數實現類
package com.callBack;
public class CallbackServiceImpl implements CallbackService {
@Override
public void callBackFunc() {
System.out.println("具體實現類回調函數開始執行...");
System.out.println("具體實現類回調函數結束執行...\n");
}
}
5、打印結果
*********具體實現類實現的回調方法_固定*********
具體實現類回調函數開始執行...
具體實現類回調函數結束執行...
*********匿名內部類實現的回調方法_靈活*********
匿名內部類回調函數開始執行...
匿名內部類回調函數結束執行...