一,什么是接口回調(diào):
接口回調(diào)(自己理解):例如A.class這個(gè)類實(shí)現(xiàn)了某一接口(C)狈定,我們可以把創(chuàng)建A類對(duì)象的引用,通過(guò)B類對(duì)象的一個(gè)方法以傳遞參數(shù)途徑賦值給B類里面聲明的(接口)C變量习蓬,那么該接口變量就可以調(diào)用被類實(shí)現(xiàn)的接口方法纽什。
簡(jiǎn)單的代碼示例:
1:接口C
public interface C{
public void printname();
}
2:A.class里面:
B b=new B();
//通過(guò)B類的這個(gè)方法賦值給B類里面的接口變量c
b.setCallBack(new C(){
public void printname(){//這句話當(dāng)B類里面的c.printname();調(diào)用之后觸發(fā)。實(shí)現(xiàn)接口回調(diào)
}
});
3:B.class里面:
public C c;//B里面聲明的接口變量
setCallBack(C c){
this.c=c;//賦值接口變量
}
c.printname();
1.首先一個(gè)對(duì)象是:老板
2.另一個(gè)是對(duì)象是:程序員
一天晚上老板想知道現(xiàn)自己公司app用戶使用數(shù)量躲叼,自己不知道如何查詢芦缰,需要向下班后在家里的程序員打電話獲得, 然后程序員查詢完后發(fā)數(shù)據(jù)給老板枫慷。
二让蕾,代碼部分:
1,定義一個(gè)接口:程序員通過(guò)回調(diào)這個(gè)接口中的方法或听,設(shè)置數(shù)據(jù)(相當(dāng)于程序員查完數(shù)據(jù)給老板發(fā)送數(shù)據(jù))
package 接口回調(diào)實(shí)例java;
public interfaceGetDataInterface{
public void callBackByTell(String name);
}
2探孝,老板類:
老板類有2中寫法:都可以看你喜好。
寫法一:
package 接口回調(diào)實(shí)例java;
public class老板{
public static void main(String[] argus){
//1.實(shí)例化程序員對(duì)象
程序員 程序猿 =new 程序員();
//2.這里主要是傳遞一些信息給程序員對(duì)象誉裆,實(shí)例化程序員里面的接口顿颅。(這里采用內(nèi)部類)
程序猿.setCallPhone("我是浩總,你查查我們app使用的用戶數(shù)量", new GetDataInterface() {
//7.接受到程序員查詢結(jié)果
@Override
public void callBackByTell(String resultData) {
System.out.print("結(jié)果:"+resultData);
}
});
//4.開(kāi)始讓程序員查詢找御。
程序猿.查詢();
}
}
//寫法二:
package 接口回調(diào)實(shí)例java;
public class 老板1 implements GetDataInterface{
public static void main(String []argus){
程序員 程序員=new 程序員();
程序員.setCallPhone("我是浩總元镀,麻煩你查下我們app使用人數(shù)發(fā)給我",new 老板1());
程序員.查詢();
}
@Override
public void callBackByTell(String resultData) {
// TODO Auto-generated method stub
System.out.println(""+resultData);
}
}
3,程序員:
package 接口回調(diào)實(shí)例java;
public class程序員{
private String resultData;
GetDataInterface dataInterface;
//3.通過(guò)此方法來(lái)實(shí)例化接口霎桅,以及設(shè)置信息栖疑,message。
public void setCallPhone(String? message,GetDataInterface dataInterface){
System.out.println(message);
this.dataInterface=dataInterface;//這里實(shí)例化接口用于6設(shè)置數(shù)據(jù)
}
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這里是自己查詢的結(jié)果:
resultData="55555人";
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.run();
//6.查詢完成之后回掉接口方法滔驶,設(shè)置數(shù)據(jù)遇革。老板獲得數(shù)據(jù)。
dataInterface.callBackByTell(resultData);
}
}
4,運(yùn)行結(jié)果:
三揭糕,結(jié)合代碼分析:
1.0 在這一過(guò)程中:首先老板需要聯(lián)系程序員(獲得程序員對(duì)象:程序員 程序猿 =new 程序員
();)萝快,并且實(shí)例化接口(到時(shí)候程序員 回老板電話)那么程序員必須有個(gè)電話或者微信,
qq之類的提供給? 老 板著角, 這里的這個(gè)(微信揪漩,電話,qq)等價(jià)于程序員對(duì) 象提供給老板
聯(lián)系自己 一個(gè)方法(setCallPhone)吏口。同時(shí)老板可以通過(guò)程序員 的這個(gè)方
法傳遞一些 信息給程序員奄容。程序猿.setCallPhone("你好我是浩總", new GetDataInterface() { }
2.0然后:程序員得到電話之后需要查詢用戶數(shù)量冰更。
這一步程序員可以進(jìn)行自己查詢過(guò)程:程序猿.查詢();
3.0最后一步:程序員通過(guò)查找之后知道了用戶數(shù)據(jù)量,通過(guò)setCallPhone已經(jīng)實(shí)例化的外部接口方
的法來(lái)發(fā)送數(shù)據(jù)給老板昂勒,實(shí)現(xiàn)回調(diào)蜀细。
dataInterface.callBackByTell(resultData);