Java 程式設計 -- Callback 與 Listener 機制

Java 程式

簡介

運算式

分枝

迴圈

陣列

函數

遞迴

錯誤處理

物件導向

封裝

繼承

多型

技巧

函式庫

字串

數學

正規表達式

容器

檔案

網路

資料庫

視窗

Thread

Listener

錯誤陷阱

相關檔案

相關資源

教學錄影

Eclipse

考題解答

訊息

相關網站

參考文獻

最新修改

簡體版

English

專案下載:Listener.zip

簡介

在 Java 當中沒有像 C# 當中的委派 (delegate) 語法,所有的委派任務都交由一種稱為 Listener 的物件完成,其實作方法乃是利用 Register - Callback 的反向呼叫機制,為了說明這個機制的原理,我們撰寫了以下的程式,以便說明 Listener - Callback 的實作原理。

程式範例

檔案:Listener.java

interface Listener {
      void onEvent(String str);
}

檔案:EventListener.java

public class EventListener implements Listener {
    String name;
    public EventListener(String name) {
        this.name = name;
    }
    public void onEvent(String str) {
        System.out.println(name+":"+str);
    }
}

檔案:Callback.java

import java.util.*;
 
public class Callback {
  List<Listener> listeners = new ArrayList<Listener>();
 
  public static void main(String[] args) {
      Callback callback = new Callback();
      callback.addListener(new EventListener("Listener 1"));
      callback.addListener(new EventListener("Listener 2"));
      callback.addListener(new EventListener("Listener 3"));
      callback.trigger("Hello!");
      callback.trigger("你好!");
  }
 
  public void addListener(Listener listener) {
      listeners.add(listener);
  }
 
  public void trigger(String msg) {
      for (int i=0; i<listeners.size(); i++) {
          listeners.get(i).onEvent(msg);
      }
  }
}

執行結果

Listener 1:Hello!
Listener 2:Hello!
Listener 3:Hello!
Listener 1:你好!
Listener 2:你好!
Listener 3:你好!

Facebook

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License