下面使用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()方法,就只有"//测试方法"是需要改变的,下面我们来做一个函数实现相同功能但更灵活:

首先定一个回调接口:

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

然后再写一个工具类:

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

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

Java 回调函数的更多相关文章

  1. java回调函数,看完就懂

    java回调函数在网上了看了些例子,比较绕,不够清晰,自己写的一个例子比较通俗,java回调其实很简单. 举个例子我是类B,我有个方法叫b(),现在我要调用类A中的方法a(),写个代码就是: publ ...

  2. Java回调函数的理解与实现

    回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用.这一设计允许了底层代码调用在高层定义的子程序. 在Java里面,我们使用接口来实现回调.举个例子 所谓的回调,就是程序员 ...

  3. Java回调函数

    维基百科上的定义:在计算机程序设计中,回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用.这一设计允许了底层代码调用在高层定义的子程序. 所谓回调,就是客户程序C调用服务程 ...

  4. 转Java 回调函数的理解

    所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数.例如Win32下的窗口过程函数就是一个典型的回调函数.一般说来,C ...

  5. JAVA回调函数ANDROID中典型的回调地方

    在计算机中回调函数是指通过函数参数传递到其他代码类的,某一块可执行代码的引用,这以设计允许了底层代码调用者在高层定义的子程序. 在JAVA里面我们使用接口的方式来实现函数的回调. 回调的通俗就是:程序 ...

  6. Java回调函数的理解

    所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数.例如Win32下的窗口过程函数就是一个典型的回调函数.一般说来,C ...

  7. java回调函数详解

    声明:博客参考于https://www.cnblogs.com/yangmin86/p/7090882.html,谢谢哥们 回调函数:是指在A类执行代码时,调用了B类中的方法,但B类中的方法执行了A类 ...

  8. java回调函数学习

    前不久学习了代理模式,其中有一个核心之一是Proxy.newProxyInstance();这里有三个参数, loader:目标对象的类加载器 interfaces:目标对象实现的所有接口组成的数组 ...

  9. 一个简单的java回调函数的实现

    回调函数 回调函数涉及的3个函数 登记回调函数 回调函数 响应回调函数 简单的解释 你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话.过了几天店里有货了,店员就打了你的电话,然 ...

随机推荐

  1. socket 基础学习

    这个示例程序是同步套接字程序,功能很简单,只是客户端发给服务器一条信息,服务器向客户端返回一条信息:这里只是一个简单的示例,是一个最基本的socket编程流程,在接下来的文章中,会依次记录套接字的同步 ...

  2. 解决jquery mobile的遇到高版本Chrome一直转圈,页面加载不出来的情况。

    把这么一段代码,加到jquery.mobile.js中后问题解决了. $(document).on('mobileinit',function(){ $.mobile.changePage.defau ...

  3. 图片裁切插件jCrop的使用心得(三)

    在这一篇里,我来具体讲讲代码该如何写. 下面是jCrop的初始化代码 //图片裁剪插件Jcrop初始化 function initJcrop() { // 图片加载完成 document.getEle ...

  4. WPF 渐隐渐现切换背景图片

    最近学习WPF,尝试着自己做一些小玩意,也遇到了一些问题,于是整理记录以便日后查阅. 我们都知道WPF可以实现一些很炫的效果,然而有时候为达到这个目的却并不是一件很容易的事情.比如:在软件中我希望能够 ...

  5. asp.net mvc NPOI 生成Excel文件

    private string PushToDown(string addtime) { DataTable dt = _bCreateCode.PushtoExcel(addtime); //1.实例 ...

  6. 由12306出错想到的div垂直居中的问题

    今天想看看元旦回家还有没有余票,偷偷的打开了12306,开始查询回家的车票,结果发现,竟然查询不出来,再查直接出错了 看到这个很郁闷,很纠结,但是突然想到了最近一直想实现div垂直居中,赶紧试了一下1 ...

  7. 原生javascript效果:无缝滚动

    <style type="text/css"> #con {width:400px; padding:10px; margin:20px auto; text-alig ...

  8. BZOJ 1688: [Usaco2005 Open]Disease Manangement 疾病管理

    Description Alas! A set of D (1 <= D <= 15) diseases (numbered 1..D) is running through the fa ...

  9. js amd

    http://www.ruanyifeng.com/blog/2012/10/asynchronous_module_definition.html http://www.adequatelygood ...

  10. Twisted 阐述

    原地址:http://bbs.gameres.com/thread_224020.html Firefly为什么使用Twisted?1.基于PythonTwisted是使用Python编写的,强壮的. ...