客戶程式 C 呼叫服務程式 S 的函數 A,S 在稍後反過來呼叫 C 提供的函數 B。對 C 來說,B 就是回調函數。C 不會主動呼叫 B,而是將 B 註冊給 S,由 S 決定何時觸發。
我打固話問同事「1+1=?」,同事說「稍後回你」。我說「我要出門,想好打我手機」。
幾分鐘後,手機響起,同事說「等於 2」。
public interface CallBack {
void CallIphone(); // 規定「打手機」這一方式
}
public class Me {
public void askQuestion() {
System.out.println("撥打固話問 1+1=?");
}
}
public class You {
public void answer(CallBack callBack) {
callBack.CallIphone(); // 觸發回調
}
public static void main(String[] args) throws InterruptedException {
new Me().askQuestion();
Thread.sleep(3000); // 模擬思考時間
new You().answer(new CallBack() {
@Override public void CallIphone() {
System.out.println("撥打手機回答等於 2");
}
});
}
}
撥打固話問 1+1=?
撥打手機回答等於 2