001package gu.dtalk.event; 002 003import java.util.Observable; 004import java.util.Observer; 005 006/** 007 * 事件侦听器抽象类 008 * @author guyadong 009 * 010 * @param <E> 事件的参数类型 011 */ 012public abstract class BaseObserver<E extends ItemEvent<?>> implements Observer { 013 014 public BaseObserver() { 015 } 016 /** 017 * 执行更新事件 018 * @param event 019 */ 020 protected abstract void doUpdate(E event); 021 @SuppressWarnings("unchecked") 022 @Override 023 public final void update(Observable o, Object arg) { 024 E event; 025 try { 026 // 通过强制类型转时是否抛出异常自动过滤不属于当前侦听器关注的对象 027 event = (E)arg; 028 } catch (Exception e) { 029 return; 030 } 031 doUpdate(event); 032 } 033 034}