如何理解java中的回调

来源:互联网 发布:php memcache set 编辑:程序博客网 时间:2024/06/15 22:48

以android中的Button的setOnClickListener这个回调为例;

Button button = (Button)this.findViewById(R.id.button);button.setOnClickListener(new Button.OnClickListener() {  //回调函数  @override  publicvoid onClick(View v) {    buttonTextView.setText("按钮被点击了");  }});

那么我们如何实现呢;

首先定义OnClickListener接口

package com.listener;/** * 点击监听器接口 * @author CodingMyWorld * */publicinterface MyOnClickListener {    publicvoid onClick();}

再定义Button按钮这个类

package com.listener;publicclass MyButton {    private MyOnClickListener listener;        /**     * 设置具体点击监听器     * @param listener 点击监听器实现类     */    publicvoid setOnClickListener(MyOnClickListener listener) {        this.listener = listener;    }        /**     * 按钮被点击     */    publicvoid doClick() {        listener.onClick();    }}

最后编写一个测试类

package com.listener;publicclass Client {    publicstaticvoid main(String[] args) {        MyButton button =new MyButton();        //注册监听器        button.setOnClickListener(new MyOnClickListener() {            @Override            publicvoid onClick() {                System.out.println("按钮被点击了");                            }                    });        //模拟用户点击        button.doClick();    }}


好了,简单理解,这就是回调

1 0