`
云上太阳
  • 浏览: 128652 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java回调终结贴

阅读更多

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接口");
	}
}

 

 

1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics