Java中的回調(callback)是很重要的一個概念,spring整合hibernate大量使用了這種技術。
究竟怎樣纔是回調呢?
這是網上最多見到的說明:
1.class A,class B
2.class A實現接口callback
3.class B擁有一個參數爲callback接口類型的函數
4.class A運行時調用class B中的函數,以自身傳入參數
5.class B已取得A,就可以隨時回調A所實現的callback接口中的方法
下面我舉一個例子:
中國電信(ChinaTelecom)是移動運營商之一,想必近兩年滿天飛的“天翼3G”大家都知道吧。空中網(KongNet)是那個總是喊“用手機看NBA”的服務提供商(ServiceProvider,簡稱“SP”)。
移動運營商和SP合作才能爲我們廣大移動用戶提供各種服務。比如音樂,彩鈴,手機看NBA等等。
這裏有一個接口ServiceProvider,也就是Callback接口;
/**
* 與中國電信合作的sp實現此接口即可
* 這個就是Callback接口
* @author wanghe
*
*/
public interface ServiceProvider {
/**
* sp可以自定義提示
*/
public void customHint();
}
一個ChinaTelecom類,即class B;
/**
* 中國電信
* @author wanghe
*
*/
public class ChinaTelecom {
private ServiceProvider sp;//callback接口作爲屬性
public void setSp(ServiceProvider sp) {
this.sp = sp;
}
/**
* 初始化
*/
public void init(){
System.out.println("Welcome, This is ChinaTelecom! ");
sp.customHint();//sp自定義的操作
}
}
一個KongNet類,即 class A
/**
* 服務提供商(SP)--空中網
* @author wanghe
*
*/
public class KongNet implements ServiceProvider{
public void customHint() {
System.out.println("優惠活動開始啦,即日起登陸空中網就有好禮送! 詳情見網站公告。");
}
public void init(){
ChinaTelecom ct=new ChinaTelecom();
ct.setSp(new KongNet());//告訴ChinaTelecom這是哪家sp
ct.init();
}
public static void main(String[] args){
KongNet sp = new KongNet();
sp.init();
}
}
在你的Eclipse裏面試一下吧,將可以看到
Welcome, This is ChinaTelecom!
優惠活動開始啦,即日起登陸空中網就有好禮送! 詳情見網站公告。
這樣的輸出。
詳解Java回調機制 (Callback) --講解+實例
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.