<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 閱讀(1724) 評論(1)  編輯  收藏 所屬分類: JAVA

    評論

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

    學(xué)習(xí)了
      回復(fù)  更多評論    
    主站蜘蛛池模板: 在线观看免费av网站| 丰满妇女做a级毛片免费观看| 99久久国产免费中文无字幕| 国产午夜亚洲精品午夜鲁丝片| 深夜特黄a级毛片免费播放| 国产zzjjzzjj视频全免费| 亚洲精品人成网线在线播放va| 欧美a级在线现免费观看| 亚洲一区二区三区高清不卡 | 亚洲成色WWW久久网站| 一区二区三区免费视频观看| 国产亚洲情侣一区二区无码AV| 一个人看的在线免费视频| 国产亚洲AV手机在线观看 | 亚洲黄色片免费看| 亚洲最大福利视频| 国产禁女女网站免费看| 一级做a爰片久久毛片免费陪| 亚洲国产精品日韩| 亚洲国产成人久久一区WWW| 尤物视频在线免费观看| 亚洲av无码专区在线播放| 久久国产色AV免费观看| 学生妹亚洲一区二区| 无码午夜成人1000部免费视频| 亚洲网站在线播放| 日本xxwwxxww在线视频免费| 成人a毛片免费视频观看| 久久九九亚洲精品| 最近最新MV在线观看免费高清| 狠狠色伊人亚洲综合成人| 亚洲最大免费视频网| 久久水蜜桃亚洲AV无码精品| 国产a v无码专区亚洲av| 最近中文字幕免费2019| 国产精品亚洲一区二区在线观看| 亚洲无av在线中文字幕| 91免费资源网站入口| 国产视频精品免费视频| 国产亚洲福利在线视频| 亚洲综合图色40p|