回調函數
回調函數涉及的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(); } }
測試結果
