Java回调技术

来源:互联网 发布:不需要网络的翻译软件 编辑:程序博客网 时间:2024/06/05 14:31

今天老师在上安卓的时候,先是给我们介绍了内部类,然后给我们讲了安卓按钮的回调机制。记录一下。

下面模拟安卓里面的按钮的回调机制:

这是一个监听的接口。

public interface OnClickListener {void onClick();}

这是按钮的类。

public class Button {private OnClickListener mOnclickListener;//将按钮被点击的响应代码保存在mOnclickListener中public void setOnclickListener(OnClickListener l){mOnclickListener=l;}//当按钮被点击时的响应public void performClick(){mOnclickListener.onClick();}}

测试类:

package dsfsf;import java.util.Scanner;class Cancel implements OnClickListener{@Overridepublic void onClick() {System.out.println("执行取消按钮事件!");}}public class Test {private static Button btnLogin;private static Button btnRegister;private static Button cancel;private static final int LOGIN=1;private static final int REGISTER=2;private static final int CANCEL=3;public static void main(String args[]){initButtons();while(true){System.out.println("输入:1-登录;2-注册;3-取消");Scanner input=new Scanner(System.in);int choise=input.nextInt();switch (choise) {case LOGIN:btnLogin.performClick();break;case REGISTER:btnRegister.performClick();break;case CANCEL:cancel.performClick();break;default:break;}}}private static void initButtons(){//创建登录和注册按钮对象btnLogin =new Button();btnRegister=new Button();cancel=new Button();//将登录按钮的单击事件保存至btnLogin.mOnClickListener中btnLogin.setOnclickListener(new OnClickListener(){@Overridepublic void onClick() {System.out.println("执行登录按钮事件!");}});btnRegister.setOnclickListener(new Register());cancel.setOnclickListener(new Cancel());}private static final class Register implements OnClickListener{@Overridepublic void onClick() {System.out.println("执行注册按钮事件!");}}}

首先谈谈内部类:我觉得一个类所处的位置不同,它的作用就不一样,并且我们称呼它们的方式也不一样。比如我们在外面new了一个类,那它就是个普通的有名字的类,这个类将被很多其他的类使用,这很正常。当我在一个类A里面又声明了一个有名字的类B,那么B就叫内部类,很显然,该内部类B应该和A类关系很密切,而其他的类几乎不与该内部类B打交道,所以我就把它声明到A类里面了。而假如内部类B只被使用一次,我就没必要特地这样做:B b=new B();因为b将只被使用一次,之后就没用了,于是就有了匿名内部类。上面的测程序为了说明内部类,特地写了三种注册事件的方式。


下面谈谈回调机制:

结合这篇帖子一起理解:http://blog.csdn.net/fengyifei11228/article/details/5729445

说是说回调技术,在我看来这就是java程序的一个巧妙设计。这里所谓的setOnclickListener就是注册函数,在initButtons方法中事先注册好了事件,并说明了,当相应事件发生时应该做哪些动作。


程序运行结果:

输入:1-登录;2-注册;3-取消
1
执行登录按钮事件!
输入:1-登录;2-注册;3-取消
2
执行注册按钮事件!
输入:1-登录;2-注册;3-取消
3
执行取消按钮事件!
输入:1-登录;2-注册;3-取消


原创粉丝点击