0
点赞
收藏
分享

微信扫一扫

[实战]java回调函数

辰鑫chenxin 2023-05-08 阅读 69


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()方法就可以实现回调功能

举报

相关推荐

0 条评论