一、回調機制概述
回調機制在JAVA代碼中一直遇到,但之前不懂其原理,幾乎都是繞著走。俗話說做不願意做的事情叫做突破,故誕生了該文章,算是新年的新氣象,新突破! 回調機制是什麼?其實回調機制一直在我們身邊存在著,只是我們習慣了存在就未曾察覺,懂得其原理就很簡單了。 先打個比方,設置場景如下,教師,成績差學生A,成績好學生B,詳細步驟如下: (1)教師讓學生A計算 一道題目 a+b=? (2)學生A苦於技能cd(臣妾做不到),不會計算,請求學生B幫忙完成 (3)學生B根據學生A告訴他的 a和b的值計算出最後的答案,然後傳給學生A (4)學生A得知到計算的答案,歡喜地告訴教師 二、實現代碼解析 (1)先定義一個統一的接口public interface CallBack {
public void solve(int result);
}
(2)Class A的實現
尤其注意的是,StudentA初始化時,需要傳入StudentB的對象,方便在請求幫助的時候有指定的對象
public class StudentA implements CallBack{
private StudentB mStuB;
public StudentA(StudentB mStuB){
this.mStuB = mStuB;
}
public void askQuestion(final int a,final int b){
new Thread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
mStuB.executeMessage(StudentA.this, a, b);
}
}).start();
}
@Override
public void solve(int result) {
// TODO Auto-generated method stub
System.out.println(result);
}
}
(3)Class B的實現
public class StudentB {
public void executeMessage(CallBack callBack,int a,int b){
System.out.println("A的問題是:"+a +" + "+ b+"=?");
int result = a + b;
callBack.solve(result);
}
}
(4)值的初始化
public class CallBackTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 1;
int b = 1;
StudentB mStuB = new StudentB();
StudentA mStuA = new StudentA(mStuB);
mStuA.askQuestion(a,b);
}
}
三、總結 參考網上經典的诠釋如下: