簡單的來說,回調就是任務的方法不是在自己類當中調用,而是將自身對象的引用交給其他對象,由其他對象的條件觸發這個方法,這個方法就稱之爲回調方法,,然後這些任務有些信息是從調用者(任務的執行者不是自己)那裏獲得的,或者是否執行該方法依賴的條件由其他類當中的信息決定,所以不能自己調用自己的方法執行,而是將自己交給調用者,自己的方法在調用者中執行。
比如一個時間任務的例子,該任務當中有超時處理方法,該任務被註冊到另一個類當中,另一個類循環檢測超時,超時的收調用超時處理方法,這就是一個典型的回調方法
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);
}
}