<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    俊星的BLOG

    JAVA MAIL之簡單事件

    JAVA MAIL 中包含了連接、計數等事件機制,下面的對連接事件的一個簡單實現:
    1、事件基類:
    package myevent;

    import java.util.EventObject;

    public abstract class MyMailEvent extends EventObject {
        
    private static final long serialVersionUID = 2183013741510840197L;

        
    public MyMailEvent(Object source) {
            
    super(source);
        }

        
        
    public abstract void dispatch(Object listener);
    }


    2、連接事件類:
    package myevent;

    public class MyConnEvent extends MyMailEvent {
        
    public static final int OPENED = 1;
        
    public static final int CLOSED = 2;
        
    protected int type;
        
    private static final long serialVersionUID = 6177016117289759191L;

        
    public MyConnEvent(Object source, int type) {
            
    super(source);
            
    this.type = type;
        }


        @Override
        
    public void dispatch(Object listener) {
            
    switch (type) {
            
    case OPENED:
                ((MyConnListener) listener).opened(
    this);
                
    break;
            
    case CLOSED:
                ((MyConnListener) listener).closed(
    this);
            
    default:
                
    break;
            }


        }


        
    public int getType() {
            
    return type;
        }

    }


    3、連接事件偵聽類:
    package myevent;

    import java.util.EventListener;

    public interface MyConnListener extends EventListener {
        
    public void opened(MyConnEvent e);

        
    public void closed(MyConnEvent e);
    }


    4、連接事件適配器類:
    package myevent;

    /** 采用Adapter的為了使用時只需重載部分方法 */
    public abstract class MyConnAdapter implements MyConnListener {
        
    public void opened(MyConnEvent e) {

        }


        
    public void closed(MyConnEvent e){
            
        }

    }


    5、測試:
    package myevent;

    import java.util.ArrayList;
    import java.util.List;

    public class EventTest {
        
    private List<MyConnListener> conns = new ArrayList<MyConnListener>();

        
    public void addConnListener(MyConnListener lis) {
            conns.add(lis);
        }


        
    public void notifyConn() {
            List
    <MyMailEvent> list = new ArrayList<MyMailEvent>();
            list.add(
    new MyConnEvent("source1", MyConnEvent.OPENED));
            list.add(
    new MyConnEvent("source2", MyConnEvent.OPENED));
            list.add(
    new MyConnEvent("source3", MyConnEvent.CLOSED));

            
    for (MyMailEvent e : list) {
                
    for (MyConnListener inst : conns) {
                    e.dispatch(inst);
                }

            }

        }


        
    public static void main(String[] args) {
            EventTest test 
    = new EventTest();
            
    // 只偵聽open事件
            test.addConnListener(new MyConnAdapter() {
                
    public void opened(MyConnEvent e) {
                    System.out.println(e.getSource() 
    + ":listener 1 after open");
                }

            }
    );
            
    // 只偵聽close事件
            test.addConnListener(new MyConnAdapter() {
                
    public void closed(MyConnEvent e) {
                    System.out.println(e.getSource() 
    + ":listener 2 after close");
                }

            }
    );
            
    // open、close都偵聽
            test.addConnListener(new MyConnAdapter() {
                
    public void opened(MyConnEvent e) {
                    System.out.println(e.getSource() 
    + ":listener 3 after open");
                }


                
    public void closed(MyConnEvent e) {
                    System.out.println(e.getSource() 
    + ":listener 3 after close");
                }

            }
    );
            test.notifyConn();
        }

    }

    輸出:
    source1:listener 1 after open
    source1:listener 
    3 after open
    source2:listener 
    1 after open
    source2:listener 
    3 after open
    source3:listener 
    2 after close
    source3:listener 
    3 after close

    6、點擊下載代碼

    posted on 2009-04-25 13:13 俊星 閱讀(211) 評論(0)  編輯  收藏 所屬分類: 代碼庫

    主站蜘蛛池模板: 亚洲中文字幕丝袜制服一区| 日韩精品视频免费在线观看| 亚洲午夜久久久影院伊人| 黄色一级毛片免费看| 免费永久在线观看黄网站| 香港特级三A毛片免费观看| 国产gav成人免费播放视频| 在线视频亚洲一区| 无码不卡亚洲成?人片| 特级毛片全部免费播放| 国产亚洲精久久久久久无码77777| 一级毛片视频免费| 亚洲日韩精品一区二区三区无码| baoyu777永久免费视频| 精品亚洲aⅴ在线观看| 18勿入网站免费永久| 亚洲区日韩精品中文字幕| 四虎永久在线精品免费观看地址 | 一区二区三区亚洲视频| 人碰人碰人成人免费视频| 亚洲综合AV在线在线播放| 久久久久久影院久久久久免费精品国产小说| 亚洲AV综合色区无码一区爱AV| 99精品视频免费在线观看| 国产成人精品日本亚洲专区6| 日本一道本高清免费| 一区二区在线视频免费观看| 亚洲精品高清国产一久久| 免费看国产精品3a黄的视频| 国产亚洲午夜精品| 久久被窝电影亚洲爽爽爽 | 国产精品国产亚洲区艳妇糸列短篇 | 成人毛片视频免费网站观看| 免费福利在线观看| 内射干少妇亚洲69XXX| 免费黄色毛片视频| 国产视频精品免费视频| 亚洲另类春色国产精品| 亚洲狠狠爱综合影院婷婷| 久久久久久精品成人免费图片| 看全免费的一级毛片|