Java 中的事件監聽機制

來源:互聯網
上載者:User

標籤:java   事件監聽機制   

看項目代碼時遇到了好多事件監聽機制相關的代碼,現學習一下:

java事件機制包括三個部分:事件、事件監聽器、事件來源。

1.事件:繼承自java.util.EventObject類,開發人員自訂。

package com.shuyan.javatest.EventTest;import java.util.EventObject;public class DnsEvent extends EventObject {    private String userData;    private long parseTime;    public DnsEvent(Object source) {        super(source);    }    public DnsEvent(Object source, String userData, long parseTime) {        super(source);        this.userData = userData;        this.parseTime = parseTime;    }    public String getUserData() {        return userData;    }    public void setUserData(String userData) {        this.userData = userData;    }    public long getParseTime() {        return parseTime;    }    public void setParseTime(long parseTime) {        this.parseTime = parseTime;    }}

2.事件監聽器:實現java.util.EventListener介面,註冊在事件來源上,當事件來源的屬性或狀態改變時,取得相應的監聽器調用其內部的回調方法。

package com.shuyan.javatest.EventTest;import java.util.EventListener;public interface DnsEventListener extends EventListener {    public void processDnsEvent(DnsEvent dnsEvent);}
監聽器的具體實作類別

public class DnsEventaListenerImpl implements DnsEventListener {    @Override    public void processDnsEvent(DnsEvent dnsEvent) {        String userdata = dnsEvent.getUserData();        System.out.println("userdata-->" + userdata);    }}

3.事件來源:事件發生的地方,由於事件來源的某項屬性或狀態發生了改變導致某項事件發生。由於事件監聽器要註冊在事件來源上,所以事件來源類中應該要有盛裝監聽器的容器(List,Set等)。

public class ManagerListener {    private List<DnsEventListener> listeners = null;    private static class Singleton {        static ManagerListener managerListener = new ManagerListener();    }    public static ManagerListener getInstance() {        return Singleton.managerListener;    }    private ManagerListener() {        listeners = new ArrayList<>();    }    public void addDnsEventListener(DnsEventListener listener) {        this.listeners.add(listener);    }    public void removeDnsEventListener(DnsEventListener listener) {        this.listeners.remove(listener);    }    public void fireDnsEventListener(DnsEvent event) {        for (DnsEventListener listener : listeners) {            listener.processDnsEvent(event);        }    }}
測試如下:


public class DnsEventTest {    public static void main(String[] args) {        ManagerListener managerListener = ManagerListener.getInstance();        DnsEvent dnsEvent = new DnsEvent(managerListener, "data", 1000L);        DnsEventaListenerImpl listener = new DnsEventaListenerImpl();        managerListener.addDnsEventListener(listener);        managerListener.fireDnsEventListener(dnsEvent);    }}



參考:http://blog.csdn.net/longlong3050/article/details/6854456



著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

Java 中的事件監聽機制

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.