Java中回調方法淺析——參數爲方法的方法

        對於回調方法,沒有參考官方的解釋。參考了網絡上的一些解釋,覺得大概是指這個一個意思:首先,要有兩個程序A、B或者兩個類A、B。其中,假設A程序爲了方便B程序調用自身的資源,從而預留了一個方法 C,這個方法 C 與普通的方法不同的之處在於 A 提供的方法 C 不含有具體的執行方式,或者說 執行信息不完全,需要調用的程序(程序B)自行補全裏面的內容。這樣,程序B在調用程序 A 提供的方法 C 時,(必須)根據自己的實際需要對 C 中得到執行方式進行補全。那麼,對於程序B來說,方法 C 就是程序 A 提供的回調方法。
        直接來說,過程比較抽象。下面結合具體的實例來說明:
        在文件的結構方式如下圖所示時,其中 ClockDelay 類爲一個接口,另外兩個分別爲Counter類和MyClock類

        其中,在Counter類中,提供了方法 countStart(),並且該方法傳遞的參數是一個 接口的類型。從下面的代碼中,可以看到,在Counter類的方法countStart()中,並未提供接口方法 DelayTime()的具體實現方式。這個實現方式,需要由調用這個方法的對象實現
 
        然後,在類MyClock中,Counter對象的countStart()方法具體調用的方式如下,需要注意這段調用語句中採用了以匿名內部類的方式重載接口中的DelayTime()方法,具體的執行方式可以根據 MyClock類的需要實現自定義。
        下面是執行之後的輸出結果:

        光看結果可能看不出什麼差別。不過,可以這樣理解: 相比於普通函數中傳遞的參數是變量,回調方法中傳遞的參數是方法,而且是可以自定義的方法。它是通過預留接口實現的。下面是源代碼的下載地址:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章