Java 回调机制

参考链接

Java回调机制解读

回调的思想

  1. 类A的a()方法调用类B的b()方法
  2. 类B的b()方法执行完毕主动调用类A的callback()方法

代码分析

public interface Callback {
    public void tellAnswer(int answer);
}

public class Teacher implements Callback {
    private Student student;
    
    public Teacher(Student student) {
        this.student = student;
    }
    
    public void askQuestion() {
        student.resolveQuestion(this);
    }
    
    @Override
    public void tellAnswer(int answer) {
        System.out.println("知道了,你的答案是" + answer);
    }
}

public interface Student {
    public void resolveQuestion(Callback callback);
}

public class Ricky implements Student {
    @Override
    public voidresolveQuestion(Callback callback) {
        // 模拟解决问题
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            
        }
        // 回调,告诉老师作业写了多久
        callback.tellAnswer(3);
    }
}

测试

@Test
public void testCallBack() {
    Student student = new Ricky();
    Teacher teacher = new Teacher(student);
    
    teacher.askQuestion();
}

Student也可以使用匿名类定义,更加简洁:

@Test
public void testCallBack2() {
    Teacher teacher = new Teacher(new Student() {
        
        @Override
        public void resolveQuestion(Callback callback) {
            callback.tellAnswer(3);
        }
    });
    
    teacher.askQuestion();
}

分析

Teacher 中,有一个解决问题的对象:Student,在Student中解决问题之后,再通过引用调用Teacher中的tellAnswer接口,所以叫回调

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容