加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Java 的Event机制畅聊

发布时间:2021-11-20 15:58:28 所属栏目:教程 来源:互联网
导读:通常Java添加监听类似C里面的回调,通常在使用时比较简单,自己定义的事件类(继承EventObject),定义监听器接口(继承EventListener),定义一个者向量来保存添加的这些监听器,通过addListenerremoveListener来操作。 但是监听器如何被触发的,从底层消息到

通常Java添加监听类似C里面的回调,通常在使用时比较简单,自己定义的事件类(继承EventObject),定义监听器接口(继承EventListener),定义一个者向量来保存添加的这些监听器,通过addListenerremoveListener来操作。
 
但是监听器如何被触发的,从底层消息到启动监听器的流程是什么样子的?
 
将分篇来说明,下面以一个BossXi ,BossLi类来说明:
 
添加EmployeeEvent事件类:
 
package Company;
 
import java.util.EventObject;
 
public class EmployeeEvent extends EventObject{
 private int m_nReason;
 
 private int m_nType;
 
 private Object m_sSource;
 
 public EmployeeEvent(Object arg0,int reason , int type) {
  super(arg0);
  // TODO Auto-generated constructor stub
  this.setType(type);
  this.m_nReason = reason;
  this.m_sSource = arg0;
 }
 
 /**
  *
  */
 private static final long serialVersionUID = 1L;
 
 public static final int EVENT_WORK_ON = 0;
 
 public static final int EVENT_WORK_OFF = 1;
 
 public int getReason(){
  return m_nReason;
 }
 
 public int getType(){
  return m_nType;
 }
 
 public int setType(int nType){
  return this.m_nType = nType;
 }
 
 public Object getSource(){
  return (java.lang.Object)m_sSource;
 }
}
 
添加EmployeeListener监听接口:
 
package Company;
 
// 实现 EventListener接口
public interface EmployeeListener extends java.util.EventListener{
 
 // 使用监听器的时候,实现并添加到
 public void onEmPloyeeEvent(EmployeeEvent empEvent);
 
}
 
添加分发消息接口MessageHandler:
 
package Company;
 
public interface MessageHandler {
 
  public void processMessage(Message message);
 
}
 
添加消息Message类:
 
package Company;
 
public class Message {
  public final static int TerminateType = -1;
  public int type;
  public Object data;
  MessageHandler handler;
 
  public Message(MessageHandler p, int t, Object d)
  {
    handler = p;
    type = t;
    data = d;
  }
 
  public boolean equals(Object o)
  {
    Message e = (Message) o;
    return ((handler == e.handler) && (type == e.type) &&
            data.equals(e.data));
  }
}

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读