<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

    學習了
      回復  更多評論    
    主站蜘蛛池模板: 亚洲四虎永久在线播放| 国产亚洲美女精品久久久2020| 免费在线观看亚洲| 99re免费在线视频| 亚洲AV日韩AV永久无码久久| 免费看黄的成人APP| 亚洲男人天堂2017| 久久综合国产乱子伦精品免费| 久久久久久精品免费免费自慰| 午夜老司机免费视频| 亚洲国产精品美女久久久久| 午夜免费1000部| 亚洲国产精品综合久久20| 免费99精品国产自在现线| 亚洲国产精品99久久久久久| 国产精品深夜福利免费观看| 日韩精品无码永久免费网站| 亚洲性久久久影院| 在线观看免费黄网站| 亚洲高清资源在线观看| 中文字幕人成无码免费视频| 性色av极品无码专区亚洲| 亚洲天堂免费在线视频| 国产免费无码一区二区| 亚洲欧洲日本国产| 又爽又高潮的BB视频免费看 | 亚洲精品国产综合久久一线| 一区二区三区免费电影| 中文字幕日韩亚洲| 最近2018中文字幕免费视频| 亚洲一区二区三区写真| 久久亚洲高清综合| 日本妇人成熟免费中文字幕| 国产精品亚洲а∨无码播放麻豆| 免费福利在线播放| 午夜在线亚洲男人午在线| 中文字幕一精品亚洲无线一区| 亚洲av日韩综合一区久热| 亚洲综合伊人久久综合| 亚洲免费在线视频观看| 亚洲av无码成人精品国产|