Java到Android逐步理解接口回调

一,什么是接口回调:

接口回调(自己理解):例如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);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,742评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,853评论 18 139
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 4,650评论 1 114
  • 一. Java基础部分.................................................
    wy_sure阅读 3,832评论 0 11
  • 作为一个即将走出象牙塔的学生党,面对着20几岁的人生,不知道你有没有过这样的体会?没有伴侣、没有工作、没有经验……...
    端银阅读 766评论 0 0