2011年12月28日 星期三

Java - callback function(1)

常常聽到callback function這個名詞,這種技巧不限定於Java,C++或.net也有各自的寫法。但精神是相同的。call function就像是直接呼叫某個function去執行該function內的程式碼。例如:

public void doSomething(){
  //doSomething()被呼叫了,來做一些事情
}

public void main(){
     doSomething();
}



而callback function就像是在未來發生某種觸發原因後,才會去執行的程式。最常見的就是像Button的onClick事件處理。舉例來說:  

        OnClickListener lis = new OnClickListener() {       
            public void onClick(View v) {
                //按下按鈕後,做一些事情
            }
        };
        Button.setOnClickListener(lis);

你 在別的地方已經先定義好一個Interface叫OnClickListener,裡面有個方法叫onClick()。onClick()就是處理 Button被按下後的callback function應用。你不可能先在OnClickListener這個Interface內把onClick()寫死,而是在未來的程式碼內,依不同的 情況,實作一個OnClickListener,然後把onClick()程式碼的內容完成。最後把這個OnClickListener的實體(如 lis)設定某人(Button)使用,像這種架構就是callback function。

1 則留言:

  1. 請問版大,小弟是Java初學者,想請問function 是否能當作變數來傳遞?
    例如版大的範例
    public void main(){
    doSomething(doSecond); //將doSecond當作變數來傳遞
    }
    public void doSomething(Function secFun){
    .........
    secFun();
    }
    public void doSecond(){
    //在doSomething執行完畢以後,會執行此funciton
    }
    不知道有沒有這樣的方式呢?

    回覆刪除