1. 什麼是接口回調:我的理解是,在一個對象的方法參數中引用另一個實現了某個接口的對象的引用,且該引用爲接口引用(上轉型)
2. 爲什麼要用接口回調:我的理解是,解決業務、類與類或者模塊與模塊之間的協作問題
3. 怎麼用接口調用,code
import java.util.HashMap;
import java.util.Map;
interface CallBack {
void invoke(Map<String, Object> mapData);
}
class Senior implements CallBack {
private final JuniorType junior;
public Senior(JuniorType junior) {
this.junior = junior;
}
public void drive() {
new Thread(new Runnable() {
@Override
public void run() {
junior.deal(Senior.this);
}
}).start();
}
@Override
public void invoke(Map<String, Object> mapData) {
System.out.println("上層模塊處理下層模塊傳上來的Map數據");
}
}
interface JuniorType {
void deal(CallBack callBack);
}
class Junior implements JuniorType {
@Override
public void deal(CallBack callBack) {
System.out.println("下層模塊處理完自己的業務把得到的數據傳遞給上層...");
// 模擬該方法處理自己業務時得到的Map數據
Map<String, Object> map = new HashMap<>(1);
callBack.invoke(map);
}
}
public class CallbackTest {
public static void main(String[] args) {
Junior junior = new Junior();
// 講下層調用類註冊到上層
Senior senior = new Senior(junior);
senior.drive();
}
}
4. 接口回調和向上轉型的區別:我的理解是:本質是一樣,只不過涉及到接口實現時我們叫接口回調;涉及到類繼承時我們叫向上轉型。
最近在看CGLIB子類代理時涉及到的方法攔截器這個回調接口,進而想到了java中什麼是接口回調的概念。希望大家多多指正~~