`
taote
  • 浏览: 33603 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java -之- 回调函数

阅读更多
回调函数有这样一种定义:
1.回调就是该函数写在高层,低层通过一个函数指针来保存这个函数,在某个事件触发下,低层通过该函数指针调用高层那个函数(c语言);
2.在java中,通常是编写另外一个类或者类库的人规定一个接口,然后你来实现这个接口,然后把这个接口作为参数传递给别人的程序,别人的程序必要时就会通过那个接口来调用你编写的函数。
public interface CallBack {
	public void execute();

}

这是别人定义的一个接口,下面是你对接口的实现:
public class TestObject {
	/**
	 * 一个用来被测试的方法,进行了一个比较耗时的循环
	 */
	public static void testMethod() {
		for (int i = 0; i < 100000000; i++) {

		}
		System.out.println("回调中···");
	}
}

然后是一个工具类的实现:
public class Tools {

	/**
	 * 测试函数使用时间,通过定义CallBack接口的execute方法
	 * 
	 * @param callBack
	 */
	public void testTime(CallBack callBack) {
		System.out.println("回调前···");
		long begin = System.currentTimeMillis();// 测试起始时间
		callBack.execute();// /进行回调操作
		long end = System.currentTimeMillis();// 测试结束时间
		System.out.println("[use time]:" + (end - begin));// 打印使用时间
		System.out.println("回调后···");
	}

	public static void main(String[] args) {
		Tools tool = new Tools();
		tool.testTime(new CallBack() {
			// 定义execute方法
			public void execute() {
				// 这里可以加放一个或多个要测试运行时间的方法
				TestObject.testMethod();
			}
		});
	}

}

在tools中,接口的对象callBack作为参数传递给了testTime()方法,通过接口的回调,调用了之前编写的testMethod()方法。
输出:
回调前···
回调中···
[use time]:94
回调后···


回调函数还有个特征:不是我来调用你,而是你来调用我。
这里的我就是“testTime”,你就是"execute"。
2
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics