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接口,所以叫回调

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 《麦肯锡 问题分析与解决技巧》——阅读笔记(共16章)

    《麦肯锡 问题分析与解决技巧》是一本关于问题分析与如何解决问题的书籍,在阅读过程中收获不少,因此留下读书笔记方便其他人来进行学习。

    黄Java
  • 作为一个程序员我最大的遗憾

    20多年前我处在了人生的一个十字路口。随着我们用5年时间为出版社(他们希望进入新兴的互联网空间)打造的Deltagraph的终结,我的第二家公司逐渐走向没落。那...

    哲洛不闹
  • NULL不能和任何字段比较和运算

    跟着阿笨一起玩NET
  • 一个 IT 青年北漂四年的感悟

    工作这几年,每年都会有朋友离开北京,每次朋友跟我告别的时候总是让我有很多感慨,问自己什么时候回去。当初毕业来北京没想太多,只是出于对互联网的喜欢,而在老家又找不...

    哲洛不闹
  • vue学习笔记9-监听属性-watch

    这样就可以实现绑定 而且他后面也有很多功能,比如.lazy,惰性更新,只有焦点离开才会更新

    雪地二货
  • Image.FromFile 锁文件的解决办法

    跟着阿笨一起玩NET
  • 自由程序员的3个开发技巧

    我们有三个系列的小技巧要分享:与你的客户沟通,保护你的声誉以及解决常见的自由职业问题。下面让我们开始吧!

    哲洛不闹
  • YYYY-mm-dd HH:MM:SS

    跟着阿笨一起玩NET
  • 不允许对64位应用程序进行修改”的解决方法

    在64位系统中使用VS对程序(32位的)进行调试,出现“不允许对64位应用程序进行修改”的提示,如下图所示:

    跟着阿笨一起玩NET
  • 熬夜并不值得程序员炫耀

    放弃睡眠就像是高利贷借款。没错,看上去你是得到了额外的时间,但你想得太乐观了,你知道代价是什么吗?放高利贷的会回来讨债,到时如果你不能支付的话,他就会夺走你的创...

    哲洛不闹

扫码关注云+社区

领取腾讯云代金券