首先舉例說明什麼是回調函數,程序員A寫了一段程序(程序a),其中預留有回調函數接口,並封裝好了該程序。程序員B要讓a調用自己的程序b中的一個方法,於是,他通過a中的接口回調自己b中的方法。目的達到。在struts2的源碼中就有這樣的例子:
com.opensymphony.xwork2.inject.ContainerImpl中有如下方法
此外還有這個回調接口:
以下是在注入方法中進行了調用:
從以上代碼中可以看到,在new ContextualCallable接口的實例進行傳參後,我們可以在接口提供的call方法中寫一些處理的代碼,而這段代碼會主調方法callInContext來進行回調。這樣就達到了擴展性的目的,callInContext方法是事先寫好的代碼,但是其中可動態插入調入者的代碼邏輯。