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

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

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

    數(shù)據(jù)加載中……
    java Annotation初用

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

    基本的需求如下:

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

    具體代碼如下:

    1、先定義一個自己的Annotation

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

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

        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;
        }
          這是基類中的方法,基類實現(xiàn)了接口中的execute方法,子類繼承父類,并添加具體的業(yè)務(wù)方法和代碼
       3、
    一個具體的handler類示例
    @CodeAnnotation(code = "10000001")
        
    public Message method(Message message) {
            System.out.println(message.getUserId());
            
    //TODO:
            return null;
        }
        
    上面的代碼,基本上手工的完成了命令碼和方法的映射,個人對Spring還不是很精通,不知道Spring有沒有完成現(xiàn)成的功能,不想重復(fù)早輪子。希望大俠們可以留言告之。

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

    評論

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

    學(xué)習(xí)了
      回復(fù)  更多評論    
    主站蜘蛛池模板: 久久精品国产亚洲AV麻豆~| 国产91免费在线观看| 一区二区在线视频免费观看| 国产91成人精品亚洲精品| 永久黄网站色视频免费观看| 久久国内免费视频| 午夜国产精品免费观看| 成年人视频免费在线观看| 黄页网站在线看免费| 永久免费的网站在线观看| 成人午夜18免费看| 国产成人免费网站在线观看| 国产乱子伦精品免费女| 亚洲另类激情专区小说图片| 亚洲综合网站色欲色欲| 久久亚洲国产视频| 亚洲美女视频免费| 日韩精品亚洲aⅴ在线影院| 亚洲日韩中文无码久久| 久久精品国产亚洲av影院| 亚洲国产成人久久99精品| 亚洲一区AV无码少妇电影| 丰满亚洲大尺度无码无码专线| 亚洲理论片在线观看| 2017亚洲男人天堂一| 美女被免费网站视频在线| 91成人免费观看在线观看| 99久久精品免费精品国产| 97在线观免费视频观看| 免费国产人做人视频在线观看| 亚洲伊人久久综合中文成人网| 亚洲AV日韩AV高潮无码专区| 亚洲av乱码一区二区三区香蕉| 亚洲精品自产拍在线观看动漫| 亚洲不卡视频在线观看| 国产偷国产偷亚洲高清在线| 国产永久免费高清在线| 亚洲精品在线免费观看视频 | 亚洲一区免费在线观看| 国产精品观看在线亚洲人成网| 水蜜桃视频在线观看免费播放高清 |