Java再學習-簡單回呼函數__▶

來源:互聯網
上載者:User

   最近在研究Spring源碼,其中有一個回呼函數的概念,一直出現,而且出現的頻率非常大,小編就查了好多資料,但是總是感覺不太實際,而且不容易理解,小編結合自己的事迹,結合生活,做了這麼幾段代碼。

首先,回呼函數,就是A類調用B類的方法C,然後B類反過來要調用A類中的方法D,這個D就是傳說中的回呼函數。感覺還是非常抽象,直接上例子吧。

回呼函數介面:

package SpringCallback;/**  * 這是一個回調介面  * @author xzp *  */  public interface CallBack {      /**      * 這個是小超考慮好以後要調用的函數告訴小徐,也就是回呼函數      * @param result 是答案      */      public void solve(String result);  } 

其中一個類:

package SpringCallback;/** * 這個是小徐 * @author xzp *  */public class Xu implements CallBack {/** * 小李對象的引用 * 相當於----->背景二 */private Xc xc; /** * 小徐的構造方法,持有小超的引用 * @param xc */public Xu(Xc xc){this.xc = xc;}/** * 小徐通過這個方法去問小超的問題 * @param question  就是小徐要問的問題,做我女朋友好嗎? */public void askQuestion(final String question){//這裡用一個線程就是非同步,new Thread(new Runnable() {@Overridepublic void run() {/** * 小徐調用小超中的方法,在這裡註冊回調介面 * 這就相當於A類調用B的方法C */xc.executeMessage(Xu.this, question); }}).start();//小徐問完以後,就去打籃球了。play();}public void play(){System.out.println("我要去打籃球了");}/** * 小超考慮好後調用此方法告訴小徐,就是所謂的小徐的回調方法 */@Overridepublic void solve(String result) {System.out.println("小超告訴小徐的答案是--->" + result);}}

另一個類:

package SpringCallback;/** * 這個就是小徐啦 * @author xzp * */public class Xc {/** *  * @param callBack   * @param question  小徐問的問題 */public void executeMessage(CallBack callBack, String question){System.out.println("小徐問的問題--->" + question);//類比小超要睡覺了,加入睡了很長時間for(int i=0; i<2000000000;i++){}/** * 小超睡醒後想到的是 好,同意。。。 */String result = "好,同意。。。";/** * 於是就告訴小徐,調用小徐中的方法 * 這就相當於B類反過來調用A的方法D */callBack.solve(result); }}

測試類別:


package SpringCallback;/** * 測試類別 * @author xzp * */public class Test {public static void main(String[]args){/** * 執行個體化小超 new一個小超 */Xc xc = new Xc();/** * 調用小徐的構造方法,加上小超的引用 */Xu xu = new Xu(xc);/** * 小徐問小超的問題 */xu.askQuestion("做我女朋友好嗎。。。。");}}

執行結果:




上面只是一些自己的一些理解,關於回呼函數,我個人理解還是有點欠缺,通過回呼函數,兩個類直接的溝通,相互不會產生太大的影響,完成調用。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.