美文网首页
Java到Android逐步理解接口回调

Java到Android逐步理解接口回调

作者: 路很长_6193 | 来源:发表于2017-04-21 10:51 被阅读0次

    一,什么是接口回调:

    接口回调(自己理解):例如A.class这个类实现了某一接口(C),我们可以把创建A类对象的引用,通过B类对象的一个方法以传递参数途径赋值给B类里面声明的(接口)C变量,那么该接口变量就可以调用被类实现的接口方法。

    简单的代码示例:

    1:接口C

    public interface C{

    public void printname();

    }

    2:A.class里面:

    B b=new B();

    //通过B类的这个方法赋值给B类里面的接口变量c

    b.setCallBack(new C(){

    public void printname(){//这句话当B类里面的c.printname();调用之后触发。实现接口回调

    }

    });

    3:B.class里面:

    public C c;//B里面声明的接口变量

    setCallBack(C c){

    this.c=c;//赋值接口变量

    }

    c.printname();

    1.首先一个对象是:老板

    2.另一个是对象是:程序员

    一天晚上老板想知道现自己公司app用户使用数量,自己不知道如何查询,需要向下班后在家里的程序员打电话获得, 然后程序员查询完后发数据给老板。

    二,代码部分:


    1,定义一个接口:程序员通过回调这个接口中的方法,设置数据(相当于程序员查完数据给老板发送数据

    package 接口回调实例java;

    public interfaceGetDataInterface{

    public void callBackByTell(String name);

    }

    2,老板类:

    老板类有2中写法:都可以看你喜好。

    写法一:

    package 接口回调实例java;

    public class老板{

    public static void main(String[] argus){

    //1.实例化程序员对象

    程序员 程序猿 =new 程序员();

    //2.这里主要是传递一些信息给程序员对象,实例化程序员里面的接口。(这里采用内部类)

    程序猿.setCallPhone("我是浩总,你查查我们app使用的用户数量", new GetDataInterface() {

    //7.接受到程序员查询结果

    @Override

    public void callBackByTell(String resultData) {

    System.out.print("结果:"+resultData);

    }

    });

    //4.开始让程序员查询。

    程序猿.查询();

    }

    }

    //写法二:

    package 接口回调实例java;

    public class 老板1 implements GetDataInterface{

    public static void main(String []argus){

    程序员 程序员=new 程序员();

    程序员.setCallPhone("我是浩总,麻烦你查下我们app使用人数发给我",new 老板1());

    程序员.查询();

    }

    @Override

    public void callBackByTell(String resultData) {

    // TODO Auto-generated method stub

    System.out.println(""+resultData);

    }

    }

    3,程序员:

    package 接口回调实例java;

    public class程序员{

    private String resultData;

    GetDataInterface dataInterface;

    //3.通过此方法来实例化接口,以及设置信息,message。

    public void setCallPhone(String  message,GetDataInterface dataInterface){

    System.out.println(message);

    this.dataInterface=dataInterface;//这里实例化接口用于6设置数据

    }

    void 查询(){

    new Runnable(){

    @SuppressWarnings("static-access")

    @Override

    public void run() {

    // TODO Auto-generated method stub

    try {

    System.out.println("查询中.....了10秒");

    new Thread().sleep(10000);

    //5这里是自己查询的结果:

    resultData="55555人";

    } catch (InterruptedException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }

    }.run();

    //6.查询完成之后回掉接口方法,设置数据。老板获得数据。

    dataInterface.callBackByTell(resultData);

    }

    }

    4,运行结果:


    三,结合代码分析:

    1.0 在这一过程中:首先老板需要联系程序员(获得程序员对象:程序员 程序猿 =new 程序员

    ();),并且实例化接口(到时候程序员 回老板电话)那么程序员必须有个电话或者微信,

    qq之类的提供给  老 板, 这里的这个(微信,电话,qq)等价于程序员对 象提供给老板

    联系自己 一个方法(setCallPhone)。同时老板可以通过程序员 的这个方

    法传递一些 信息给程序员。程序猿.setCallPhone("你好我是浩总", new GetDataInterface() { }

    2.0然后:程序员得到电话之后需要查询用户数量。

    这一步程序员可以进行自己查询过程:程序猿.查询();

    3.0最后一步:程序员通过查找之后知道了用户数据量,通过setCallPhone已经实例化的外部接口方

    的法来发送数据给老板,实现回调。

    dataInterface.callBackByTell(resultData);

    相关文章

      网友评论

          本文标题:Java到Android逐步理解接口回调

          本文链接:https://www.haomeiwen.com/subject/bwfdzttx.html