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

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

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

    數據加載中……
    java Annotation初用

    java的Annotation不是太熟悉,不過最近又要用,所以就找了相關的文檔看了下,并寫了一個Demo

    基本的需求如下:

    Server根據對方傳遞的類型碼找到具體的某個類的具體方法并運行。個人覺得用Annotation去注釋代碼比較好,也減少配置文件,所以就體驗了一把。

    具體代碼如下:

    1、先定義一個自己的Annotation

    @Retention(RetentionPolicy.RUNTIME)
    public @interface CodeAnnotation {
        String code();
    }

         這里一定要將自己的Annotation定義為運行時的,默認好像是編譯時的,所以無法動態的根據server接收到的code去匹配函數
       2、
    @Override定義父類basicHandler通過放射去獲取執行子類的方法

        public Message execute(Message message) {
            String code 
    = message.getCode();
            String className 
    = this.getClass().getName();
            Message msg 
    = null;
            
    try {
                
    for (Method m : Class.forName(className).getMethods()) {
                    
    if (m.getAnnotation(CodeAnnotation.class!= null) {
                        
    if (code.equals(m.getAnnotation(CodeAnnotation.class).code())) {
                            
    try {
                                msg 
    = (Message)m.invoke(this, message);
                            } 
    catch (IllegalArgumentException e) {
                                e.printStackTrace();
                            } 
    catch (IllegalAccessException e) {
                                e.printStackTrace();
                            } 
    catch (InvocationTargetException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                }
            } 
    catch (SecurityException e) {
                e.printStackTrace();
            } 
    catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            
    return msg;
        }
          這是基類中的方法,基類實現了接口中的execute方法,子類繼承父類,并添加具體的業務方法和代碼
       3、
    一個具體的handler類示例
    @CodeAnnotation(code = "10000001")
        
    public Message method(Message message) {
            System.out.println(message.getUserId());
            
    //TODO:
            return null;
        }
        
    上面的代碼,基本上手工的完成了命令碼和方法的映射,個人對Spring還不是很精通,不知道Spring有沒有完成現成的功能,不想重復早輪子。希望大俠們可以留言告之。

    posted on 2012-01-21 01:19 潘潘.eagle 閱讀(1711) 評論(1)  編輯  收藏 所屬分類: JAVA

    評論

    # re: java Annotation初用 2012-01-23 23:12 tb

    學習了
      回復  更多評論    
    主站蜘蛛池模板: 高潮毛片无遮挡高清免费| 亚洲国产日韩女人aaaaaa毛片在线| 亚洲国产精品无码久久98| 永久免费av无码不卡在线观看| 亚洲尹人九九大色香蕉网站 | 美女一级毛片免费观看| 四虎成人精品一区二区免费网站| 亚洲一卡2卡3卡4卡乱码 在线| 日本最新免费网站| 国产亚洲玖玖玖在线观看| 免费无码又爽又刺激聊天APP| 亚洲午夜精品久久久久久app| 国产自产拍精品视频免费看| 午夜亚洲国产理论片二级港台二级| 国产免费久久精品| h在线看免费视频网站男男| 亚洲欧洲自拍拍偷午夜色无码| 小草在线看片免费人成视久网| 亚洲欧洲另类春色校园小说| 搡女人真爽免费视频大全| 99亚洲男女激情在线观看| 中文字幕人成人乱码亚洲电影 | 亚洲av永久无码精品表情包| 午夜免费啪视频在线观看| 性xxxx黑人与亚洲| 国产又粗又长又硬免费视频| 黄色短视频免费看| 亚洲日本乱码一区二区在线二产线 | 精精国产www视频在线观看免费| 亚洲国产精品VA在线看黑人| 99re在线视频免费观看| 亚洲一本一道一区二区三区| 亚洲综合精品网站| 亚洲成人免费网站| 日韩一级片免费观看| 久久久久亚洲av无码专区导航| 在线观看免费大黄网站| 免费看男人j放进女人j免费看| 亚洲自偷自偷在线成人网站传媒| 亚洲日韩VA无码中文字幕 | 日韩亚洲综合精品国产|