java回调函数_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java回调函数

java回调函数

 2012/5/10 10:41:10  snoopy7713  程序员俱乐部  我要评论(0)
  • 摘要:下面使用java回调函数来实现一个测试函数运行时间的工具类:如果我们要测试一个类的方法的执行时间,通常我们会这样做:java代码publicclassTestObject{/***一个用来被测试的方法,进行了一个比较耗时的循环*/publicstaticvoidtestMethod(){for(inti=0;i<100000000;i++){}}/***一个简单的测试方法执行时间的方法*/publicvoidtestTime(){longbegin=System
  • 标签:函数 Java
下面使用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()方法就可以实现回调功能

发表评论
用户名: 匿名