Java学习之回调机制

来源:互联网 发布:龙珠孙悟空知乎 编辑:程序博客网 时间:2024/06/05 10:04

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
原创粉丝点击