上面一篇介绍了一下对回调函数的基本理解和一个简单的比较抽象的例子,那么下面通过一个比较实际的例子来看看对回调函数的运用
比如现在我们要写一个测试类方法运行时间的程序,按照一般的程序思维,我们会写出下面的代码
- public class TestTime {
-
-
-
- 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) {
- TestTime test=new TestTime();
- test.testTime();
- }
- }
相
信上面写法大家都能看懂,这个写法也是大家都能写出来的,但是现在我们换个角度,我们最开始的要求就是测试方法的运行时间,也就是我们现在要完成的工作就
是测试运行时间,但是具体是什么方法,可以随便你给出来,很显然上面的写法就太死板了一些。我们可以这样子改改,让程序马上灵活起来首先我们可以先建立一个回调接口:
- public interface CallBack {
-
- void execute();
- }
然后后定义一个工具类:
- public class Tools {
-
-
-
-
-
- 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(){
-
- public void execute(){
-
- TestTime.testMethod();
- }
- });
- }
-
- }
注
意看上面这段代码testTime方法的第9行,只是直接调用了接口的方法,而当我们想要用这个测试工具测试程序运行时间的时候,那么就只需要像main
方法里面一样,调用testTime方法的时候去实现CallBack接口的execute()方法,也就是说再你调用的时候你想在里面写什么方法都
ok,而最后testTime方法会帮你测试出你这个方法所需要的时间,这样就在java里面其实就用了简单的一个多态的概念而达到了回调函数的作用。通
过上面的列子,看看是不是你这个测试时间的程序就写得更加灵活了呢?
回调函数2,布布扣,bubuko.com
回调函数2
原文:http://www.cnblogs.com/cd-snoopy/p/3717816.html