Java学习之回调机制

Java学习之回调机制

目录

前言

在进行java学习时,听到很多大牛说,java有很多机制,例如:反射机制、回调机制等等。
先开始,也是晕的没边。后来,查找很多资料后,了解了一些,在这里记录一下,java的回调机制吧。

一、回调机制简介

简而言之,就是,A类调用B类的E方法,然后,因为B类的E方法会调用A类的D方法。所以,称A类的D方法为回调发方法。

而在实现时,一般要满足如下几个条件:

首先会存在三个Object:A 类、B类、接口C。

  • A类实现了接口C中的方法D。
  • A类有了B类的引用。
  • B类中存在一个输入参数的数据类类型为接口C的方法E。
  • 且,在B类中对E方法的定义中会存在对接口C的方法D的调用。
  • 因为,A类中存在B类的引用。所以, A类的对象 可以调用 B类方法E ,并且传入的参数为A.this。
  • 又因为,D是A实现了的接口C的方法。
  • 所以,整个过程就出现了,A调用了B的E方法,而B的E方法又回调了A的D方法。

二、举例说明

举个栗子说就是:

上级A 这里有一堆需要处理的数据和处理数据时遵循的规则,而手下有B。
B在处理这些数据时,需要遵循处理这些数据的规则,所以,
会看这些数据的处理规则手册,而这些处理规则手册是由上级A依据一套相当完善的规则
制度编写的。B处理完数据后,A会让B将结果提交。

如果这个例子与上文中对回调机制的实例描述对比的话,那么:有如下对应关系:

名称对应关系
被回调类:上级A————————————————————————————类A
被调用类:B——————————————————————————————类B
被调用方法:B将结果提交—————————————————————————-类B的E方法
被实现的回调接口:A制定数据处理规则时所依赖的那一套相当完整的规则制度。——————接口C
被回调的方法:按照A制定的数据处理规则进行数据的处理。————————————类A实现的接口C的方法D

回调过程: 首先,A让B处理数据,就调用了B的出来数据方法,然后,在B进行数据处理时,因为要依照A制定的规范进行处理,所以就在B使用处理舒服方法时,调用了A的规范数据方法。

三、使用具体代码进行实现说明:

说了那么多理论的,下面来点实际代码,刺激一下诸位的‘味蕾’。

  • 首先是定义一个Interface: C
public interface C{
    public String formData(String data);
}
  • 定义被回调者:A
public class A implements C{
    private B b = null;
    private String data = "Lots Of Data";
    public A(B b){
        this.b = b;
    }


    @Override
    public String formData(String data){
        //System.out.println("hello:"+data);
        return "hello:"+data;
    }
    public void setData(String data){
        this.data = data;
    }
    public String getData(){
        return this.data;
    }
    public void setB(B b){
            this.b = b;
        }
    public B getB(){
        return this.b;
    }

}
  • 定义被调用者:B
public class B{

    public String BtoformData(C c){

        String data = c.formData(((A)c).getData());
        return data;
    }
}
  • 程序测试

    public class Test{
    public static void main(String[] args){
    
        A a = new A(new B());
        String formedData = a.getG().BtoformData(a.this);
    }
    }

    运行 Test之后,会打印hello:Lots Of Data,则表示正确。

四、总结

在使用回调机制时,用一句话总结就是,
一个实现了某个接口的类在调用另一个以该类为参的方法时,被调用了实现了的接口方法。而这个方法被成为毁掉方法。
这只是我对回调机制的理解,如果有说的不对的地方,欢迎大家指出讨论。
同时欢迎大家转载,转载时请注明出处谢谢!
snowlive
http://blog.csdn.net/snowlive

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尹振坤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值