程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java回調函數的理解

Java回調函數的理解

編輯:關於JAVA

所謂回調,就是客戶程序C調用服務程序S中的某個函數A,然後S又在某個時候反過來調用C中的某個函數B,對於C來說,這個B便叫做回調函數。例如Win32下的窗口過程函數就是一個典型的回調函數。一般說來,C不會自己調用B,C提供B的目的就是讓S來調用它,而且是C不得不提供。由於S並不知道C提供的B姓甚名誰,所以S會約定B的接口規范(函數原型),然後由C提前通過S的一個函數R告訴S自己將要使用B函數,這個過程稱為回調函數的注冊,R稱為注冊函數。Web Service以及Java的RMI都用到回調機制,可以訪問遠程服務器程序。(這段是網上抄的,摘自http://hi.baidu.com/f117_n/blog/item/2f52e612347cd3c8c3fd78ad.Html

重新舉個例子來理解回調:

我遇到了一個問題,便用家裡的固話打給我的同事,他說不太清楚,稍後給我回復。我說我一會要出去,你想到了之後打我手機吧。沒過多久,我同事就打手機過來告訴了我答案。

下面是代碼:

1、先定義一個接口,規定回答問題的條件是打我手機

  1. public interface CallBack {
  2. //通過手機回答
  3. void CallIphone();
  4. }

2、調用者(我):

  1. public class Me {
  2. public void askQuestion(){
  3. System.out.println("撥打固話問1+1=?");
  4. }
  5. }

3、被調用者(同事):

  1. public class You {
  2. public void answer(CallBack callBack){
  3. //進行回調
  4. callBack.CallIphone();
  5. }
  6. public static void main(String[] args) throws InterruptedException {
  7. new Me().askQuestion();
  8. Thread.sleep(3000);
  9. new You().answer(new CallBack() {
  10. //實現接口,即回答問題的方式
  11. public void CallIphone() {
  12. System.out.println("撥打手機回答等於2");
  13. }
  14. });
  15. }
  16. }

4、顯示結果

撥打固話問1+1=?
撥打手機回答等於2

代碼很簡單,理解也很膚淺,希望對大家有用

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved