JAVA實作回呼
熟悉MS-Windows和X Windows事件驅動設計模式的開發人員,通常是把一個方法的指標傳遞給事件來源,當某一事件發生時來呼叫這個方法(也稱為「回調”)。 Java的物件導向的模型目前不支援方法指針,似乎無法使用這種方便的機制。
Java支援interface,透過interface可以實現相同的回呼。其訣竅就在於定義一個簡單的interface,申明一個被希望回調的方法。
例如,假定當某一事件發生時會得到通知,我們可以定義一個interface:
public interface InterestingEvent { // 这只是一个普通的方法,可以接收参数、也可以返回值 public void interestingEvent(); }
這樣我們就有了任何一個實現了這個接口類對象的手柄grip。
當一事件發生時,需要通知實作InterestingEvent 介面的對象,並呼叫interestingEvent() 方法。
class EventNotifier { private InterestingEvent ie; private boolean somethingHappened; public EventNotifier(InterestingEvent event) { ie = event; somethingHappened = false; } public void doWork() {<br> if (somethingHappened) {<br> // 事件发生时,通过调用接口的这个方法来通知<br> ie.interestingEvent();<br> } <br> }<br>}
在這個例子中,用somethingHappened 來標示事件是否發生。
希望接收事件通知的類別必須要實現InterestingEvent 接口,而且要把自己的引用傳遞給事件的通知者。
public class CallMe implements InterestingEvent { private EventNotifier en; public CallMe() { // 新建一个事件通知者对象,并把自己传递给它 en = new EventNotifier(this); } // 实现事件发生时,实际处理事件的方法 public void interestingEvent() { // 这个事件发生了,进行处理 } }
以上是透過一個非常簡單的例子來說明Java中的回呼的實作。
當然,也可以在事件管理或事件通知者類別中,透過註冊的方式來註冊多個對此事件感興趣的物件。
1. 定義一個介面InterestingEvent ,回呼方法nterestingEvent(String event) 簡單接收一個String 參數。
interface InterestingEvent { public void interestingEvent(String event); }
2. 實現InterestingEvent接口,事件處理類別
class CallMe implements InterestingEvent { private String name; public CallMe(String name){ this.name = name; } public void interestingEvent(String event) { System.out.println(name + ":[" +event + "] happened"); } }
3. 事件管理員,或事件通知者
class EventNotifier { private List<CallMe> callMes = new ArrayList<CallMe>(); public void regist(CallMe callMe){ callMes.add(callMe); } public void doWork(){ for(CallMe callMe: callMes) { callMe.interestingEvent("sample event"); } } }
以上就是對Java回呼機制的介紹,有需要的同學可以參考下。
更多java 實作回調程式碼實例相關文章請關注PHP中文網!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

禪工作室 13.0.1
強大的PHP整合開發環境

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中