當前位置:首頁 » 編程語言 » java回調

java回調

發布時間: 2022-01-08 14:04:40

A. 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都用到回調機制,可以訪問遠程伺服器程序。

下面舉個通俗的例子:
某天,我打電話向你請教問題,當然是個難題,^_^,你一時想不出解決方法,我又不能拿著電話在那裡傻等,於是我們約定:等你想出辦法後打手機通知我,這樣,我就掛掉電話辦其它事情去了。過了XX分鍾,我的手機響了,你興高采烈的說問題已經搞定,應該如此這般處理。故事到此結束。這個例子說明了「非同步+回調」的編程模式。其中,你後來打手機告訴我結果便是一個「回調」過程;我的手機號碼必須在以前告訴你,這便是注冊回調函數;我的手機號碼應該有效並且手機能夠接收到你的呼叫,這是回調函數必須符合介面規范。

通過上面個人感覺到回調更多的應用就是結合非同步。比如:Ajax中js通過組件和伺服器的非同步通信。

B. JAVA裡面方法回調是什麼意思

註明:此答案為轉載,出處:網路知道

====================================

比如你寫了兩個類A和B,並且各生成一個對應的實例a 和b ,在a 中有一個方法fa( 此方法只負責生成兩個隨機數)要調用b中的一個方法fb(此方法對兩個數進行求各) 來進行求和,fb求得結果後要調用a的另一個方法ffa(此方法用於顯示求得的結果),這時ffa就叫作回調函數,(反回來調用一下的意思)
為什麼要這么麻煩呢,如果fb直接返回結果不好嗎,試想如果fb執行時間較長,那麼fa就會一直等結果而導致fa不往下執行了,此時如果用回調這個功能實現,由於 回調函數一般是由系統非同步調用的,方法fa調用fb後就不用等而直接往下執行,比如可以再生成兩隨機數給fb,fb會依次得到結果後通過回調機制來調用ffa顯示出來,其實就是為實現生成隨機數和計算隨機數的非同步執行。好象fa和fb是兩個獨立執行的線程,提高程序效率。

非同步調用是回調函數的一種典型應用

正是因為回調函數大多數情況下(98%的比例)最常用於非同步的多線程程序中,所以大家經常認為只要用到回調函數了則程序就是非同步的.這個理解不對

fa ,fb方法分別運行於兩個線程中才能實現非同步工作,因為回調函數只是實現非同步調用的手段, 線程間通信(比如要進行線程間同步)時程序員常通過在一個線程中引發事件來通知另一線程響應,而引發事件其實就是一種調用回調函數的過程.由此可以理解VB的事件編程模式下我們寫的那些按鈕點擊事件中的代碼其實就是回調函數的實現代碼

C. java中怎樣定義回調函數

程序員A寫了一段程序(程序a),其中預留有回調函數介面,並封裝好了該程序。程序員B要讓a調用自己的程序b中的一個方法,於是,他通過a中的介面回調自己b中的方法。目的達到。在C/C++中,要用回調函數,被掉函數需要告訴調用者自己的指針地址,但在JAVA中沒有指針,怎麼辦?我們可以通過介面(interface)來實現定義回調函數。
假設我是程序員A,以下是我的程序a:
[java] view plainprint?
public class Caller
{
public MyCallInterface mc;

public void setCallfuc(MyCallInterface mc)
{
this.mc= mc;
}

public void call(){
this.mc.method();
}
}
還需要定義一個介面,以便程序員B根據我的定義編寫程序實現介面。

public interface MyCallInterface
{
public void method();

}
於是,程序員B只需要實現這個介面就能達到回調的目的了:
public class B implements MyCallInterface
{
public void method()
{
System.out.println("回調");
}

public static void main(String args[])
{
Caller call = new Caller();
call.setCallfuc(new B());
call.call();
}
}

D. Java回調函數

應該是有一個函數式介面Phone,它有唯一一個方法call(),消費者類實現這個介面Phone,商店老闆類的對象中保存一個List<Phone>,當中存放每個來買過熱狗的實現了Phone方法的對象;每當一個熱狗做好時,取出列表中第一個對象,調用它的call()方法通知它熱狗已做好。

E. java回調的作用

這篇的例子已經非常簡潔了,實在是不需要加註釋了。
你直接把問題提出來吧。

補充點東西吧:一般來說類的成員變數一般都是數據對象,主要是用來傳遞數據用的。而回調的意思是把一段程序作為成員變數,在特定的場合使用該段程序。這就是回調的核心。

F. Java中什麼是介面回調

可以把使用某一介面的類創建的對象的引用賦給該介面聲明的介面變數,那麼該介面變數就可以調用被類實現的介面的方法。

實際上,當介面變數調用被類實現的介面中的方法時,就是通知相應的對象調用介面的方法,這一過程稱為對象功能的介面回調。

Java語言特點

Java看起來設計得很像C++,但是為了使語言小和容易熟悉,設計者們把C++語言中許多可用的特徵去掉了,這些特徵是一般程序員很少使用的。

例如,Java不支持go to語句,代之以提供break和continue語句以及異常處理。Java還剔除了C++的操作符過載(overload)和多繼承特徵,並且不使用主文件,免去了預處理程序。因為Java沒有結構,數組和串都是對象,所以不需要指針。

G. java 的回調函數是什麼 講的簡單些

就是你媽媽在做飯,你在玩電腦。媽媽做飯是回調函數,飯做完了會通知你,隨後你再執行關閉電腦方法去吃飯。沒有回調函數的話,在媽媽做完飯以前,你不能做其他事,只能等。做完飯了,你結束等待,去吃飯

H. java 如何寫回調方法

publicclassCaller
{
publicMyCallInterfacemc;

publicvoidsetCallfuc(MyCallInterfacemc)
{
this.mc=mc;
}

publicvoidcall(){
this.mc.method();
}
}

介面


{
publicvoidmethod();

}

測試


{
publicvoidmethod()
{
System.out.println("回調");
}
publicstaticvoidmain(Stringargs[])
{
Callercall=newCaller();
call.setCallfuc(newB());
call.call();
}
}

I. Java 什麼是回調

  1. 所謂回調,就是客戶程序Client調用服務程序Service中的某個方法A,然後Service又在某個時候反過來調用Client中的某個方法B,對於Client來說,這個B便叫做回調函數

  2. 回調實現的步驟
    1、定義回調介面和回調方法
    2、Client實現回調介面和回調方法,並在Client中包含Service引用,通過引用調用Servie中的方法並且必須傳入一個當前對象Client(因為當前對象實現了CallBack介面所以也屬於介面對象)
    3、在Service中定義一個介面對象並在方法中對初始化(將Client傳過來的當前對象賦值給介面對象),通過介面對象調用介面中方法(調用的Client實現的介面方法)
    4、測試

J. JAVA 回調功能 實現方法

介面怎麼實現不是回調關心的問題,事實上正式由於不關心介面怎麼實現才被稱之為回調。。。
本來都是高層策略調用低層支持模塊,比如排序調用數組,但在C中我們經常看到集合遍歷函數有一個visit的函數指針,這個visit正是回調函數,它可能是列印元素、把元素添加到集合、刪除元素等高層策略,而低層的遍歷函數不關心這些,它做的只是每找到一個元素就調用一次visit。
C#的委託的確有非同步回調,JAVA我記得沒有類似委託的實現。

JAVA只能用介面實現回調。介面回調的特徵是一個實例持有一個介面的引用。例如:
interface CallBack
{
execute();
}
Class BaseClass
{
public CallBack executor;
}
這其實是DIP--介面倒置原則所要求的。

熱點內容
麥塊有什麼伺服器 發布:2024-12-25 22:12:58 瀏覽:374
網上比較火的安卓系統是什麼 發布:2024-12-25 21:57:06 瀏覽:993
資料庫一個的和 發布:2024-12-25 21:50:40 瀏覽:465
鈣化分析演算法 發布:2024-12-25 21:49:51 瀏覽:462
運用計演算法 發布:2024-12-25 21:49:46 瀏覽:943
微信安裝安卓707什麼意思 發布:2024-12-25 21:38:15 瀏覽:882
演示文稿如何取消密碼 發布:2024-12-25 21:21:18 瀏覽:99
最近上傳視頻 發布:2024-12-25 21:05:39 瀏覽:396
php招聘源碼 發布:2024-12-25 21:05:38 瀏覽:991
c語言輸入數組賦值 發布:2024-12-25 21:01:43 瀏覽:655