来自维基百科的对回调(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() {@Overridepublic void listener() {System.out.println("监听click点击事件");}});button.click();}interface OnListener{public void listener();}
}
结果
上述方法就是异步回调,只有在按钮触发了点击事件后才会执行,如果一直不触发点击事件,则一直都不会执行。