zoukankan      html  css  js  c++  java
  • Java 回调函数

    下面使用java回调函数来实现一个测试函数运行时间的工具类:


    如果我们要测试一个类的方法的执行时间,通常我们会这样做:

    public   class  TestObject {  
        /**  
         * 一个用来被测试的方法,进行了一个比较耗时的循环  
         */   
        public   static   void  testMethod(){  
            for ( int  i= 0 ; i< 100000000 ; i++){  
                  
            }  
        }  
        /**  
         * 一个简单的测试方法执行时间的方法  
         */   
        public   void  testTime(){  
            long  begin = System.currentTimeMillis(); //测试起始时间   
            testMethod(); //测试方法   
            long  end = System.currentTimeMillis(); //测试结束时间   
            System.out.println("[use time]:"  + (end - begin)); //打印使用时间   
        }  
          
        public   static   void  main(String[] args) {  
            TestObject test=new  TestObject();  
            test.testTime();  
        }  
    }  

    大家看到了testTime()方法,就只有"//测试方法"是需要改变的,下面我们来做一个函数实现相同功能但更灵活:

    首先定一个回调接口:

    public   interface  CallBack {  
        //执行回调操作的方法   
        void  execute();  
    }  

    然后再写一个工具类:

    public   class  Tools {  
          
        /**  
         * 测试函数使用时间,通过定义CallBack接口的execute方法  
         * @param callBack  
         */   
        public   void  testTime(CallBack callBack) {  
            long  begin = System.currentTimeMillis(); //测试起始时间   
            callBack.execute(); ///进行回调操作   
            long  end = System.currentTimeMillis(); //测试结束时间   
            System.out.println("[use time]:"  + (end - begin)); //打印使用时间   
        }  
          
        public   static   void  main(String[] args) {  
            Tools tool = new  Tools();  
            tool.testTime(new  CallBack(){  
                //定义execute方法   
                public   void  execute(){  
                    //这里可以加放一个或多个要测试运行时间的方法   
                    TestObject.testMethod();  
                }  
            });  
        }  
          
    }  

    大家看到,testTime()传入定义callback接口的execute()方法就可以实现回调功能

    本文转自:http://kidult.iteye.com/blog/148982

  • 相关阅读:
    基于移动最小二乘曲面的点云对齐(一) 隐式平面的生成
    最小二乘法的原理及改进
    三维扫描原理及精度控制
    C语言实现界面(不通过MFC避免遗忘)
    2020年04月11日腾讯一面总结
    什么样的钱该花
    js修改伪类before边框颜色
    12.19技术知识点整理
    在windows下搭建类mac前端开发环境
    工作中遇到的bug修复
  • 原文地址:https://www.cnblogs.com/sishuiliuyun/p/3152882.html
Copyright © 2011-2022 走看看