首页 > 代码库 > 如何理解java中的回调

如何理解java中的回调

以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();
    }
}


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

如何理解java中的回调