回調函數
回調函數涉及的3個函數
登記回調函數
回調函數
響應回調函數
簡單的解釋
你到一個商店買東西,剛好你要的東西沒有貨,於是你在店員那里留下了你的電話。過了幾天店里有貨了,店員就打了你的電話,然后你接到電話后就到店里去取了貨。在這個樣例里,你的電話號碼就叫回調函數。你把電話留給店員就叫登記回調函數,店里后來有貨了叫做觸發了回調關聯的事件。店員給你打電話叫做調用回調函數,你到店里去取貨叫做響應回調事件。回答完成。來自知乎點擊打開鏈接
代碼的實現
首先有一個接口 interface CallBack,當然沒有也是能夠的,主要是用來預定義業務邏輯
public interface CallBack {
/*
* 響應回調函數
*/
public void slove();
}
然后是上面接口的實現,登記回調和響應回調的實現類
public class A implements CallBack {
B b = new B();
@Override
/*
* (non-Javadoc)
* @see CallBack#slove()
* 響應回調函數
*/
public void slove() {
System.out.println("the problem is solve!");
}
/*
* 登記回調函數
*/
public void askQuestion(){
System.out.println("ask b solve the problem!");
/*
* 自己去做其它事
*/
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("A want to do another thing!");
}
}).start();
/*
* ask b to solve this problem
*/
this.b.call(this);
}
/*
* test
*/
public static void main(String[] args) {
A a = new A();
a.askQuestion();
}
}
然后就是實現回調函數的類
public class B {
/*
* 回調函數
*/
public void call(CallBack a){
/*
* b help a solve the priblem
*/
System.out.println("b help a solve the problem!");
/*
* call back
*/
a.slove();
}
}
測試結果
