java 实现回调机制

来源:互联网 发布:thinkcell for mac 编辑:程序博客网 时间:2024/04/29 22:23

简单的来说,回调就是任务的方法不是在自己类当中调用,而是将自身对象的引用交给其他对象,由其他对象的条件触发这个方法,这个方法就称之为回调方法,,然后这些任务有些信息是从调用者(任务的执行者不是自己)那里获得的,或者是否执行该方法依赖的条件由其他类当中的信息决定,所以不能自己调用自己的方法执行,而是将自己交给调用者,自己的方法在调用者中执行。


比如一个时间任务的例子,该任务当中有超时处理方法,该任务被注册到另一个类当中,另一个类循环检测超时,超时的收调用超时处理方法,这就是一个典型的回调方法

      

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);    }}


0 0