如果我們要測(cè)試一個(gè)類的方法的執(zhí)行時(shí)間,通常我們會(huì)這樣做:
java 代碼
public class TestObject {
/**
* 一個(gè)用來被測(cè)試的方法,進(jìn)行了一個(gè)比較耗時(shí)的循環(huán)
*/
public static void testMethod(){
for ( int i= 0 ; i< 100000000 ; i++){
}
}
/**
* 一個(gè)簡(jiǎn)單的測(cè)試方法執(zhí)行時(shí)間的方法
*/
public void testTime(){
long begin = System.currentTimeMillis(); //測(cè)試起始時(shí)間
testMethod(); //測(cè)試方法
long end = System.currentTimeMillis(); //測(cè)試結(jié)束時(shí)間
System.out.println("[use time]:" + (end - begin)); //打印使用時(shí)間
}
public static void main(String[] args) {
TestObject test=new TestObject();
test.testTime();
}
}
大家看到了testTime()方法,就只有"//測(cè)試方法"是需要改變的,下面我們來做一個(gè)函數(shù)實(shí)現(xiàn)相同功能但更靈活:
首先定一個(gè)回調(diào)接口:
java 代碼
public interface CallBack {
//執(zhí)行回調(diào)操作的方法
void execute();
}
然后再寫一個(gè)工具類:
java 代碼
public class Tools {
/**
* 測(cè)試函數(shù)使用時(shí)間,通過定義CallBack接口的execute方法
* @param callBack
*/
public void testTime(CallBack callBack) {
long begin = System.currentTimeMillis(); //測(cè)試起始時(shí)間
callBack.execute(); ///進(jìn)行回調(diào)操作
long end = System.currentTimeMillis(); //測(cè)試結(jié)束時(shí)間
System.out.println("[use time]:" + (end - begin)); //打印使用時(shí)間
}
public static void main(String[] args) {
Tools tool = new Tools();
tool.testTime(new CallBack(){
//定義execute方法
public void execute(){
//這里可以加放一個(gè)或多個(gè)要測(cè)試運(yùn)行時(shí)間的方法
TestObject.testMethod();
}
});
}
}
大家看到,testTime()傳入定義callback接口的execute()方法就可以實(shí)現(xiàn)回調(diào)功能