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用户使用数量,自己不知道如何查询,需要向下班后在家里的程序员打电话获得, 然后程序员查询完后发数据给老板。

二,代码部分:


Java到Android逐步理解接口回调_第1张图片

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逐步理解接口回调)