码迷,mamicode.com
首页 > 编程语言 > 详细

Java回调理解 (step by step)

时间:2014-12-23 10:29:09      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:java   回调   interface   匿名内部类   

在网上搜索了许多篇关于java回调函数的文章,自己也来试了一下写了这篇博客,可能有些地方理解不到位,烦请各位大大指正。

计算机程序设计中,回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码引用。这一设计允许了底层代码调用在高层定义的子程序

        在Java里面,我们使用接口来实现回调。


模拟一个场景:一个Girl给她男朋友Man打电话,然后Man给她回复:

首先定义一个接口:

package mine.callback2;

public interface CallInterface {
	void execute();
}
Girl:

package mine.callback2;

public class Girl {
	public CallInterface ci;		//保存一个接口引用
	public void setCallFun(CallInterface ci){
		this.ci=ci;
	}
	public void call(){
		ci.execute();		//回调实现CallInterface接口Man中的方法
	}
}
Man:

package mine.callback2;

public class Man implements CallInterface {

	@Override
	public void execute() {
		System.out.println("好的,女王大人");
	}

	public static void main(String[] args) {
		Girl girl = new Girl();
		girl.setCallFun(new Man());
		girl.call();
	}
}
接口不变,实现实现以上相同的功能:

Girl:

package mine.callback1;

public class Girl {
	public CallInterface ci;
	public void CallFun(CallInterface ci){
		System.out.println("陪我去逛街,好么?");
		ci.execute();	//进行回调操作
	}
}
Man:

package mine.callback1;

public class Man {

	public static void answerA() {
		System.out.println("好的,女王大人!");
	}
	public static void answerB(){
		System.out.println("对不起,我这儿还有任务没完成,以后有时间陪你噢.");
	}
	public static void main(String[] args) {
		Girl girl = new Girl();
		girl.CallFun(new CallInterface() {
			
			@Override
			public void execute() {
				//这里可以调用更多的回答
				answerB();
			}
		});
	}
}
如果思路不够清晰可以看下面这篇文章:http://kidult.iteye.com/blog/148982





Java回调理解 (step by step)

标签:java   回调   interface   匿名内部类   

原文地址:http://blog.csdn.net/u012169499/article/details/42098895

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!