函数A执行时需要先给它传递函数B, 好在合适的时候调用, 以完成函数A. 这个被传入的函数B被称为回调函数(Callback function).
如何理解在调用库中某些预先备好的目标函数时, 需要先给该函数传递另一个函数, 让库中的目标函数在合适的时候, 去调用传给它函数来完成目标函数.
打个比方
假如你去一家餐厅吃饭, 你告诉服务员说你要吃饭, 然后她会让你对着菜单点菜, 你点完菜后她就会陆续地将才给你上来.
你要吃饭的行为就相当于库中的目标函数(通常称之为中间函数), 但进行这个行为前, 你需要告诉服务员你要点什么, 点什么菜是由你决定的, 点菜的这个行为也就是回调函数.
与函数间调用不同的是:
中间函数在接收一个回调函数前是不完整的;
通过实回调函数实现的不同,可以改变中间函数的行为, 所以它非常灵活
1. 首先定义一个回调函数的接口, 方便回调函数能根据业务的不同,实现不同的实例.
public interface CallbackInterface {
boolean process(String param);
}
2. 定义中间函数, 并在中间函数中调用回调函数. 中间函数时你直接使用的函数, 你只是在该函数中调用了你定义的回调函数, 它和普通函数没有什么区别.
@Data
public class Huzz {
public String execute(CallbackInterface callbackInterface){
System.out.println("before: 中间函数的内容");
boolean result = callbackInterface.process("TEST");
System.out.println("after: 中间函数的内容");
return result ? "相同": "不相等";
}
}
3. 使用回调函数.
public static void main(String[] args) {
Huzz huzz = new Huzz();
String result = huzz.execute(param -> {
System.out.println("RUN");
if ("TEST".equals(param)) {
return true;
}
return false;
});
huzz.execute(new CallbackInterface() {
@Override
public boolean process(String param) {
if (param.length() == 4) {
return true;
}
return false;
}
});
}



