回调 callback ,字面意思是回电话
我的简单的理解,调用方法时,把某个方法当作入参,被调用方法执行流程中调用了这个入参,其行为称为回调。
再简单点,具体到java, 入参是一个声明好的对象,方法体里调了这个对象中的方法。
没错,这种代码经常写,就是回调。
回调是异步的体现。
举个实在的例子,场景:调用某个方法得到结果,并打印结果。 这个场景是最常见的。
把其改为回调的方式: 调用方法并入参一个打印方法(java中把对象作为方法的载体),被调用者计算出结果后,不再返回,而是调用打印方法。
这其实实现了异步(虽然还是阻塞的),调用者不用等待方法的返回。 被调用者用回调的方式实现打印。
以下是实现:
把 calculate(1,2 , new Netty01());
public class Netty01 {
//调用者
public static void main(String[] args) {
calculate(1,2 , new Netty01());
}
//回调方法
public static void print(String s){
System.out.println(s);
}
//处理方法, netty01就是传进来的回调方法
public static void calculate(int a , int b , Netty01 netty01){
int c = a+b;
netty01.print(String.valueOf(c)); //回调
}
}
在知乎上看到这样的解释:
一般写程序是你调用系统的API,如果把关系反过来,你写一个函数,让系统调用你的函数,那就是回调了,那个被系统调用的函数就是回调函数。
只要是回调,就会有约定,或者说是接口。