學習編程的時候,經常會聽到別人提起回調函數,但自己對這個概念一直似懂非懂,所以今天打算好好學習整理一下回調函數。所謂回調,就是A類中調用B類中的某個方法C,然後B類中反過來調用A類中的方法D,D這個方法就叫回調方法。在c語言裏回調函數是用指針完成的,由於java沒有指針,我們用回調對象代替。下面,我們舉一個例子來描述一下回調的過程:
送貨員有一些貨需要派送出去,但他不知道要什麼時候進行派送,所以他打電話問經理,然而經理這個時候在做大保健,就和送貨員說:等我把手頭上一億的項目忙完再說啦,你先去忙,等下可以發貨的時候我打電話給你。於是送貨員就繼續等待,3秒後,經理call了送貨員,送貨員開始發貨,整個過程結束。
在上面這個例子中,送貨員就是A類,經理是B類,”經理通知送貨員“就是方法C,送貨員送貨就是方法D。下面我們用代碼實現一下:
//回調接口 Interface Callbackable{ pubilc void execute(); } class A implements Callbackable{ private B b; public A(B b){ this.b=b; } public void askManager(){ new Thread(new Runnable(){ @Override public void run(){ b.callback(this); } }); doOtherThings(); public void execute(){ System.out.println("送貨去咯"); } } public void doOtherThings(){ System.out.println("學習"); } } class B{ public void callback(Callbackable c){ //大保健中... for(int i=0;i<3;i++) System.out.println("啊~"); c.execute(); } }