本文目錄一覽:
- 1、java 如何寫回調方法
- 2、Java 什麼是回調
- 3、JAVA介面回調的疑問。
- 4、JAVA中 介面是什麼? 介面的回調是什麼?
- 5、Java中什麼是介面回調?
- 6、請問JAVA中介面中自動回調方法的原理是什麼?
java 如何寫回調方法
public class Caller
{
public MyCallInterface mc;
public void setCallfuc(MyCallInterface mc)
{
this.mc= mc;
}
public void call(){
this.mc.method();
}
}
介面
public interface MyCallInterface
{
public void method();
}
測試
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();
}
}
Java 什麼是回調
所謂回調,就是客戶程序Client調用服務程序Service中的某個方法A,然後Service又在某個時候反過來調用Client中的某個方法B,對於Client來說,這個B便叫做回調函數
回調實現的步驟
1、定義回調介面和回調方法
2、Client實現回調介面和回調方法,並在Client中包含Service引用,通過引用調用Servie中的方法並且必須傳入一個當前對象Client(因為當前對象實現了CallBack介面所以也屬於介面對象)
3、在Service中定義一個介面對象並在方法中對初始化(將Client傳過來的當前對象賦值給介面對象),通過介面對象調用介面中方法(調用的Client實現的介面方法)
4、測試
JAVA介面回調的疑問。
介面是定義方法的,CallBack介面中的getResult中定義的需要一個String 參數(形式參數) ,在調用的時候也同樣提供這樣的參數(實際參數 , 第一個紅框)。
回調的流程:第二個圖中 main執行
第13行 : 當執行a.loadImage時,會調用第一個圖中的loadImage方法,並傳遞兩個參數(一個url,一個CallBack的內部類對象),經過處理之後start線程
會執行run()方法;
然後調用callBack(CallBack的內部類對象)中的getResult方法,
第14行: getResult方法執行的是第14行代碼,然後往下執行,並輸出
——————–》那個url
JAVA中 介面是什麼? 介面的回調是什麼?
Java介面是一系列方法的聲明,是一些方法特徵的集合,一個介面只有方法的特徵沒有方法的實現,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具有不同的行為(功能)。
兩種含義:一,Java介面,Java語言中存在的結構,有特定的語法和結構;二,一個類所具有的方法的特徵集合,是一種邏輯上的抽象。前者叫做「Java介面」,後者叫做「介面」。
介面回調是指:可以把使用某一介面的類創建的對象的引用賦給該介面聲明的介面變數,那麼該介面變數就可以調用被類實現的介面的方法。實際上,當介面變數調用被類實現的介面中的方法時,就是通知相應的對象調用介面的方法,這一過程稱為對象功能的介面回調。看下面示例。interface People{ void peopleList();}class Student implements People{ public void peopleList(){ System.out.println(“I』m a student.”);}}class Teacher implements People{ public void peopleList(){ System.out.println(“I』m a teacher.”);}}public class Example{ public static void main(String args[]){ People a; //聲明介面變數a=new Student(); //實例化,介面變數中存放對象的引用a.peopleList(); //介面回調a=new Teacher(); //實例化,介面變數中存放對象的引用a.peopleList(); //介面回調}}結果:I』m a student.I』m a teacher.再來看看向上轉型(upcasting)的概念。
用 Java 介面實現回調函數的等價功能熟悉 MS-Windows 和 X Window System 事件驅動編程模型的開發人員,習慣於傳遞在某種事件發生時調用(即「回調」)的函數指針。Java 的面向對象模型目前並不支持方法指針,Java 的介面支持提供了一種獲得回調的等價功能的機制。其技巧就是:定義一個簡單介面,並在該介面中聲明我們要調用的方法。假定我們希望在某個事件發生時得到通知。我們可以定義一個介面:InterestingEvent.javapackage org.zj.sample;public interface InterestingEvent { public void interestingEvent ();}這使得我們可以控制實現該介面的類的任何對象。因此,我們不必關心任何外部類型信息。發出事件信號的類必須等待實現了 InterestingEvent 介面的對象,並在適當時候調用 interestingEvent() 方法。EventNotifier.javapackage org.zj.sample;public class EventNotifier { private InterestingEvent ie; private boolean somethingHappened; public EventNotifier(InterestingEvent event) { ie = event; // 保存事件對象以備後用。 somethingHappened = false; // 還沒有要報告的事件。 } public void doWork() { if (somethingHappened) { // 檢查設置的謂詞。 ie.interestingEvent();// 通過調用介面的這個方法發出事件信號。 } } public void setHappened(){//設置謂詞。 somethingHappened=true; }}在上例中,使用 somethingHappened 謂詞來跟蹤是否應觸發事件。希望接收事件通知的代碼必須實現 InterestingEvent 介面,並將自身引用傳遞給事件通知程序。CallMe.javapackage org.zj.sample;public class CallMe implements InterestingEvent { @SuppressWarnings(“unused”) private EventNotifier en; public CallMe() { // 注意 EventNotifier (InterestingEvent event),應該傳遞一個介面類型。 // 而下面將this,即實現了InterestingEvent介面的CallMe實例傳遞給//EventNotifier。也就是所謂的介面回調了。 en = new EventNotifier(this); // 創建事件通知程序,並將自身引用傳遞給它。 } // 為事件定義實際的處理程序。
Java中什麼是介面回調?
可以把使用某一介面的類創建的對象的引用賦給該介面聲明的介面變數,那麼該介面變數就可以調用被類實現的介面的方法。
實際上,當介面變數調用被類實現的介面中的方法時,就是通知相應的對象調用介面的方法,這一過程稱為對象功能的介面回調。
Java語言特點
Java看起來設計得很像C++,但是為了使語言小和容易熟悉,設計者們把C++語言中許多可用的特徵去掉了,這些特徵是一般程序員很少使用的。
例如,Java不支持go to語句,代之以提供break和continue語句以及異常處理。Java還剔除了C++的操作符過載(overload)和多繼承特徵,並且不使用主文件,免去了預處理程序。因為Java沒有結構,數組和串都是對象,所以不需要指針。
請問JAVA中介面中自動回調方法的原理是什麼?
通常情況下,我們創建一個對象,並馬上直接調用它的方法。然而,在有些情況下,希望能在某個場景出現後或條件滿足時才調用此對象的方法。回調就可以解決這個「延遲調用對象方法」的問題。這個被調用方法的對象稱為回調對象。
實現回調的原理簡介如下:
首先創建一個回調對象,然後再創建一個控制器對象,將回調對象需要被調用的方法告訴控制器對象。控制器對象負責檢查某個場景是否出現或某個條件是否滿足。當此場景出現或此條件滿足時,自動調用回調對象的方法。
可以舉個現實生活中的例子。
一讀者想借《編程的奧秘——.NET軟體技術學習與實踐》這本書,但這本書已被其他讀者借走了。於是,讀者與圖書館管理員間發生了以下對話:
讀者:「我把我的電話號碼告訴你,等書一到就馬上通知我。」
管理員:「好的。另一讀者把書還回來後,馬上給您打電話,書我先幫您留著。」
在上述這個場景中,讀者就是「回調對象」,管理員就是「控制器對象」,讀者的電話號碼就是「回調對象的方法」,另一讀者的還書事件就是「某一特定的場景」。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/152484.html