常常聽到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。
請問版大,小弟是Java初學者,想請問function 是否能當作變數來傳遞?
回覆刪除例如版大的範例
public void main(){
doSomething(doSecond); //將doSecond當作變數來傳遞
}
public void doSomething(Function secFun){
.........
secFun();
}
public void doSecond(){
//在doSomething執行完畢以後,會執行此funciton
}
不知道有沒有這樣的方式呢?