http://kidult.javaeye.com/blog/148982
下面使用java回调函数来实现一个测试函数运行时间的工具类:
如果我们要测试一个类的方法的执行时间,通常我们会这样做:
java 代码
1. public class TestObject {
2. /**
3. * 一个用来被测试的方法,进行了一个比较耗时的循环
4. */
5. public static void testMethod(){
6. for ( int i= 0 ; i< 100000000 ; i++){
7.
8. }
9. }
10. /**
11. * 一个简单的测试方法执行时间的方法
12. */
13. public void testTime(){
14. long begin = System.currentTimeMillis(); //测试起始时间
15. testMethod();
16. long end = System.currentTimeMillis(); //测试结束时间
17. System.out.println("[use time]:" + (end - begin)); //打印使用时间
18. }
19.
20. public static void main(String[] args) {
21. TestObject test=new TestObject();
22. test.testTime();
23. }
24. }
大家看到了testTime()方法,就只有"//测试方法"是需要改变的,下面我们来做一个函数实现相同功能但更灵活:
首先定一个回调接口:
java 代码
1. public interface CallBack {
2. //执行回调操作的方法
3. void execute();
4. }
然后再写一个工具类:
java 代码
1. public class Tools {
2.
3. /**
4. * 测试函数使用时间,通过定义CallBack接口的execute方法
5. * @param callBack
6. */
7. public void testTime(CallBack callBack) {
8. long begin = System.currentTimeMillis(); //测试起始时间
9. callBack.execute();
10. long end = System.currentTimeMillis(); //测试结束时间
11. System.out.println("[use time]:" + (end - begin)); //打印使用时间
12. }
13.
14. public static void main(String[] args) {
15. Tools tool = new Tools();
16. tool.testTime(new CallBack(){
17. //定义execute方法
18. public void execute(){
19. //这里可以加放一个或多个要测试运行时间的方法
20. TestObject.testMethod();
21. }
22. });
23. }
24.
25. }
大家看到,testTime()传入定义callback接口的execute()方法就可以实现回调功能