简单的来说,回调就是任务的方法不是在自己类当中调用,而是将自身对象的引用交给其他对象,由其他对象的条件触发这个方法,这个方法就称之为回调方法,,然后这些任务有些信息是从调用者(任务的执行者不是自己)那里获得的,或者是否执行该方法依赖的条件由其他类当中的信息决定,所以不能自己调用自己的方法执行,而是将自己交给调用者,自己的方法在调用者中执行。
比如一个时间任务的例子,该任务当中有超时处理方法,该任务被注册到另一个类当中,另一个类循环检测超时,超时的收调用超时处理方法,这就是一个典型的回调方法
public interface Work {
public void task();
}
public class Classwork implements Work {
@Override
public void task() {
System.out.println("做课堂作业");
}
}
public class Homework implements Work {
@Override
public void task() {
System.out.println("做家庭作业");
}
}
public class Teacher {
private String teacherName;
public String getTeacherName() {
return teacherName;
}
public void setTeacherName(String teacherName) {
this.teacherName = teacherName;
}
public void task(Work work) {
System.out.println(teacherName + "分配");
// 回调A中的函数
work.task();
}
}
public class Test {
public static void main(String[] args) {
Homework homework = new Homework();
Classwork classwork = new Classwork();
Teacher b = new Teacher();
b.setTeacherName("蜀僧");
b.task(homework);
b.task(classwork);
}
}