学习过JavaScript的应该都知道,在js中一个方法可以当成一个参数传入另一个方法里面,然后在方法里面调用。这样的例子我们称为回调。在java的语法中不能把一个方法当成一个参数传递,而又很多地方又能用到,所以我在这讲一下
回调一般用于某些地方需要调用一个方法,但是方法的具体实现却不清楚。举个例子,一个桌面应用,当按钮被点击后系统会自动调用点击后应该执行的逻辑。但是没写之前根本不知道该执行什么逻辑,这里就需要用到回调了。下面我们来模拟一下这个过程。
模拟系统的Button类,表示一个按钮
public class Button {
interface OnClickListener{
public void click();
}
private OnClickListener onClickListener;
//不知道click方法里面具体什么逻辑
public void click(){
if(onClickListener!=null){
onClickListener.click();
}
}
public void setOnClickListener(OnClickListener onClickListener){
this.onClickListener = onClickListener;
}
}
模拟计算机调用Button类的click方法
public class Page {
public static void main(String[] args) {
Button button = new Button();
button.setOnClickListener(new OnClickListener() {
@Override
public void click() {
// TODO Auto-generated method stub
}
});
button.click();
}
}