初识Java回调机制

原来一直听闻回调机制,但是也一直不理解,于是就在网上查了许多资料。在这里,简单总结。
首先回调,单从字面上来理解,即返回去调用。我的解释是不是很好理解!
再来,所谓回调就是:A类中调用B类中的方法C,然后B类中反过来调用A类中的方法D,D这个方法就是回调方法。不要晕,我们一步一步来……
下面,举个栗子:
1.老师在黑板上出了道“1+1”的计算题,让小明来填,这么简单的题,小明直接心算就出来了。
模拟代码如下:

public class Student {

    private String name = null;

    public Student(String name) {
    super();
    this.name = name;
    }

    public void setName(String name) {
        this.name = name;
    }

    private int Add(int a,int b){

        return a+b;
    }

    public void fillBank(int a,int b){

        int result = Add(a,b);
        System.out.println("心算结果是"+"a"+"+"+"b"+"=" + result);
    }
}

测试代码:

public class Test1 {

    public static void main(String[] args) {
        int a = 1;
        int b = 1;
        Student s = new Student("小明");
        s.fillBank(a, b);
    }
}

运行结果是:心算结果是a+b=2
2.下来,老师有出了道“166+122”的计算题,让小明算,然后去办公室批改作业。小明一脸蒙逼,不会啊。。。。。怎么办,在线急。这时,小李子跑过来嘲笑的看了他一眼,朝他扔了一个计算器。模拟代码如下:

//计算器
public class Calculator {

    public int add(int a ,int b){
        return a + b;
    }
}

public class Student {

    private String name = null;

    public Student(String name) {
        super();
        this.name = name;
    }

    public void setName(String name) {
        this.name = name;
    }

    private int Add(int a,int b){

        return a+b;
    }

    public void fillBank(int a,int b){

        int result = Add(a,b);
        System.out.println("使用计算器的结果是"+"a"+"+"+"b"+"=" + result);
    }
}

测试代码如下:

public class Test2 {

    public static void main(String[] args) {
        int a = 166;
        int b = 122;
        Student s = new Student("小明");
        s.fillBank(a, b);
    }
}

运行结果如下:使用计算器的结果是a+b=288
现在这个过程仍没有涉及回调机制,但小明的部分工作已经转移。
3.老师来检查发现,小明又算对了,觉得这娃不错。于是又出了道“2323232+2323232”,回办公室了。小明欲哭无泪,这下惨了,小卖部的辣条要卖完了。此时,他的目光朝向小李子呵呵一笑,只要小李子帮他完成,他就送他一包辣条。小李子经不住诱惑就答应了。
模拟代码如下:

//超级计算机(将计算器和小李子看成一个整体)
public class SuperCalculator {

    public void add(int a, int b,Student xiaoming){
        int result = a+b;
        xiaoming.fillBank(a, b,result);
    }9
}

小明直接使用使用一个方法寻求帮助

public class Student {

    private String name = null;

    public Student(String name) {
        super();
        this.name = name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void callHelp(int a , int b){
        new SuperCalculator().add(a, b, this);
    }
    public void fillBank(int a,int b,int result){

        System.out.println("求助小李结果是"+"a"+"+"+"b"+"=" + result);
    }
}

测试代码如下:

public static void main(String[] args) {
    int a=2323232;
    int b=2323232;
    Student s = new Student("小明");
    s.callHelp(a, b);
}

运行结果是:求助小李结果是a+b=4646464
执行流程是:小明通过callHelp方法调用了小李子(new SuperCalculator())的add方法,在调用的时候将自身的引用传入,小李子在用计算器算出结果后,回调了小明的fillBankfang方法,把结果写在黑板上。
这里的fillBlankfang方法就是常说的回调函数

说了这么多,不知道你对回调机制有没有一个大概的理解呢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值