正常情況下開(kāi)發(fā)人員使用已經(jīng)定義好的API,這個(gè)過(guò)程叫Call。但是有時(shí)這樣不能滿足需求,就需要程序員注冊(cè)自己的程序,然后讓事先定義好多API在合適的時(shí)候調(diào)用注冊(cè)的方法,這叫CallBack。
“當(dāng)通常大家說(shuō)的回調(diào)函數(shù)一般就是按照別人的定好的接口規(guī)范寫(xiě)的,等待別人調(diào)用的函數(shù),在C語(yǔ)言中,回調(diào)函數(shù)通常通過(guò)函數(shù)指針來(lái)傳遞;在Java中,通常就是編寫(xiě)另外一個(gè)類或類庫(kù)的人規(guī)定一個(gè)接口,然后你來(lái)實(shí)現(xiàn)這個(gè)接口,然后把這個(gè)實(shí)現(xiàn)類的一個(gè)對(duì)象作為參數(shù)傳給別人的程序,別人的程序必要時(shí)就會(huì)通過(guò)那個(gè)接口來(lái)調(diào)用你編寫(xiě)的函數(shù)。”
使用技巧:定一個(gè)接口,在接口中聲明我們想調(diào)用的方法。
在另一個(gè)方法中注冊(cè)剛定義的回調(diào)接口
package com.call;
public interface Callback {
public void executeMethod();
}
-----------------------------------------------------
package com.call;
public class Tools {
public void getTime(Callback call) {
long start = System.currentTimeMillis();
call.executeMethod();
long end = System.currentTimeMillis();
System.out.println("cost time=" + (end - start));
}
}
---------------------------------------------
package com.call;
//測(cè)試執(zhí)行方法消耗時(shí)間
public class Main {
public static void main(String[] args) {
Tools tool = new Tools();
tool.getTime(new Callback() {
public void executeMethod() {
new Main().testMethod();
}
});
}
public void testMethod() {
for (int i = 0; i < 10000; i++) {
System.out.print("");
}
}
}