首页 > 编程语言 > 详细

java回调终结贴

时间:2015-12-19 02:09:19      阅读:200      评论:0      收藏:0      [点我收藏+]

java回调终结贴

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????——我一直不太信任自己的记忆力,所以我把它们都写下来?

? ?

? ? 写程序不明白回调的难听点说真的都没有入门,事件驱动的基本上都是回调实现,比如Android中按钮点击,Swing中的按钮点击,回调运用的地方真的太多了,必须得拿下。可是回调就是那么绕,一时让人摸不着头脑。下面两个例子一定会让你明白回调。

第一个例子我们以android点击按钮为例

? ? Button.class

?

/**
 * 这是一个按钮
 * @author albert
 *
 */
public class Button {
        //点击按钮
	public void click(ClickListener listenner){
		listenner.onClick();
	}
}

?点击事件接口,供Button的click事件使用

/**
 * 模拟事件处理,具体点击后的算法给实现者
 * @author albert
 *
 */
interface ClickListener{
	public void onClick();
}

?下面是在一个Activity上点击按钮的具体处理

?

?

/**
 * 模拟android中的界面(里面可以添加Button等)
 * @author albert
 *
 */
public class Activity {
	public static void main(String[] args) {
		Button btn = new Button();
		btn.click(new ClickListener() {
			@Override
			public void onClick() {
				System.out.println("这里具体实现点击后要执行的算法");
			}
		});
	}
}

?运行Activity后控制台打印一段文字。不知道这个大家有没有看明白,这个是具体的实际操作过程,我们再抽象下。

?

?

public class A {
	public void func(CallBack callBack){
		callBack.call();
	}
}
/**回调接口*/
interface CallBack{
	public void call();
}

?

?

具体的实现类B

public class B {
	public static void main(String[] args) {
		A a = new A();
		a.func(new CallBack() {
			@Override
			public void call() {
				System.out.println("这里具体实现点击后要执行的算法");
			}
		});
	}
}

?

?

上面两个例子应该很好理解了吧,然后B类可以改良下

?

public class B implements CallBack{
	public static void main(String[] args) {
		B b = new B();
		A a = new A();
		a.func(b);
	}

	@Override
	public void call() {
		System.out.println("让B实现callback接口");
	}
}

?

?

java回调终结贴

原文:http://zyqwst.iteye.com/blog/2264966

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!