一,什么是接口回调:
接口回调(自己理解):例如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);
网友评论