来自维基百科的对回调(Callback)的解释:In computer programming, a callback is any executable code that is passed as an argument to other code, which is expected to call back (execute) the argument at a given time. This execution may be immediate as in a synchronous callback, or it might happen at a later time as in an asynchronous callback.
也就是说,把一段可执行的代码像参数传递那样传给其他代码,而这段代码会在某个时刻被调用执行,这就叫做回调。如果代码立即被执行就称为同步回调,如果在之后晚点的某个时间再执行,则称之为异步回调。关于同步和异步,这里不作讨论,请查阅相关资料。
在JAVA中,这一思想的实现可以通过匿名内部类实现。我们可以模拟Swing的Button监听实现,来讲述回调函数。
public class Button{
private OnListener onListener;
//模拟监听事件
public void setOnListener(OnListener onListener) {
this.onListener = onListener;
}
//模拟点击事件
public void click(){
if(onListener!=null){
onListener.listener();
}
System.out.println("--触发点击事件--");
}
public static void main(String[] args) {
Button button = new Button();
//自定义监听事件
button.setOnListener(new OnListener() {
@Override
public void listener() {
System.out.println("监听click点击事件");
}
});
button.click();
}
interface OnListener{
public void listener();
}
}
结果
上述方法就是异步回调,只有在按钮触发了点击事件后才会执行,如果一直不触发点击事件,则一直都不会执行。