Java回調理解 (step by step)

在網上搜索了許多篇關於java回調函數的文章,自己也來試了一下寫了這篇博客,可能有些地方理解不到位,煩請各位大大指正。

計算機程序設計中,回調函數,或簡稱回調,是指通過函數參數傳遞到其它代碼的,某一塊可執行代碼引用。這一設計允許了底層代碼調用在高層定義的子程序

        在Java裏面,我們使用接口來實現回調。


模擬一個場景:一個Girl給她男朋友Man打電話,然後Man給她回覆:

首先定義一個接口:

package mine.callback2;

public interface CallInterface {
	void execute();
}
Girl:

package mine.callback2;

public class Girl {
	public CallInterface ci;		//保存一個接口引用
	public void setCallFun(CallInterface ci){
		this.ci=ci;
	}
	public void call(){
		ci.execute();		//回調實現CallInterface接口Man中的方法
	}
}
Man:

package mine.callback2;

public class Man implements CallInterface {

	@Override
	public void execute() {
		System.out.println("好的,女王大人");
	}

	public static void main(String[] args) {
		Girl girl = new Girl();
		girl.setCallFun(new Man());
		girl.call();
	}
}
接口不變,實現實現以上相同的功能:

Girl:

package mine.callback1;

public class Girl {
	public CallInterface ci;
	public void CallFun(CallInterface ci){
		System.out.println("陪我去逛街,好麼?");
		ci.execute();	//進行回調操作
	}
}
Man:

package mine.callback1;

public class Man {

	public static void answerA() {
		System.out.println("好的,女王大人!");
	}
	public static void answerB(){
		System.out.println("對不起,我這兒還有任務沒完成,以後有時間陪你噢.");
	}
	public static void main(String[] args) {
		Girl girl = new Girl();
		girl.CallFun(new CallInterface() {
			
			@Override
			public void execute() {
				//這裏可以調用更多的回答
				answerB();
			}
		});
	}
}
如果思路不夠清晰可以看下面這篇文章:http://kidult.iteye.com/blog/148982





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章