java回調(diào)函數(shù)

利用接口來實現(xiàn)回調(diào),即在調(diào)用回調(diào)函數(shù)的類中實現(xiàn)接口,并實現(xiàn)接口中的方法即回調(diào)的方法,被調(diào)用類中存在接口的熟悉,并將調(diào)用類中的接口實例賦值給被調(diào)用類中,被調(diào)用類中通過調(diào)用這個接口的方法來實現(xiàn)回調(diào)。java中沒有函數(shù)的指針,所以通過接口(調(diào)用類實現(xiàn)接口的方法,即回調(diào)的函數(shù))來實現(xiàn)。
那么這個接口能否用抽象類來代替?其實是可以的,抽象類也可以用匿名的方式實現(xiàn)。

1、回調(diào)接口
public interface Callback {

   String callBack();
 }

2、被調(diào)用者
public class Another {
  private Callback callback;
  //調(diào)用實現(xiàn)類的方法
  public void setCallback(Callback callback) {
    this.callback = callback;
  }
    //業(yè)務(wù)需要的時候,通過委派,來調(diào)用實現(xiàn)類的具體方法
  public void doCallback(){
    //...相應(yīng)操作
    //在合適位置調(diào)用回調(diào)方法
    System.out.println(callback.callBack());
  }
}

3、測試回調(diào)函數(shù)
public class TestCallcack {
  public static void main(String[] args) {
    //創(chuàng)建調(diào)用者的實現(xiàn)類
    Another another = new Another();
    //將回掉接口注冊到實現(xiàn)類中
    another.setCallback(new Callback() {  //匿名類實現(xiàn)接口
      @Override
      public String callBack() {
        //通過實現(xiàn)接口函數(shù),來注冊回調(diào)函數(shù)
        return "you are a pig";
      }
    });
    //執(zhí)行函數(shù),將回調(diào)setCallback中實現(xiàn)接口函數(shù)
    another.doCallback();
  }
}

其中TestCallback中用匿名類來實現(xiàn)接口Callback

        new Callback(){
            @Override
              public String callBack(){
                 //....
              }
         }  

異步調(diào)用可以新建一個線程去執(zhí)行函數(shù)調(diào)用,如下:

        new Thread(new Runnable() {
            
            public void run() {
                // TODO Auto-generated method stub
                
                Another a = new Another();
                
                a.setCallback(new Callback() {  //匿名類實現(xiàn)接口
                      
                      public String callBack() {
                        //通過實現(xiàn)接口函數(shù),來注冊回調(diào)函數(shù)
                        return "you are a pig";
                      }
                    });
                a.doCallback();
            }
        }).start();

異步回調(diào)參考下面這篇文章:

http://www.cnblogs.com/puyangsky/p/5581051.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,633評論 18 399
  • 一:java概述:1,JDK:Java Development Kit,java的開發(fā)和運行環(huán)境,java的開發(fā)工...
    ZaneInTheSun閱讀 2,800評論 0 11
  • 在js中,因為js是單線程操作,所以經(jīng)常需要使用回調(diào)來完成異步操作或類似如下這樣,將一個函數(shù)作用到數(shù)組的每個元素上...
    _palm閱讀 457評論 0 2
  • (一)Java部分 1、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,241評論 0 62
  • 記得,有個人曾經(jīng)問我,今天的你,是你想要的樣子嗎?這句話在我很開心的時候問我,我一定會覺得這是一句玩笑。然而,偏偏...
    麥麥子子閱讀 223評論 0 0

友情鏈接更多精彩內(nèi)容