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

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

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

    LinuxChan的程序園地

    前端后端Web開發技術

     

    兩個很簡單的java反射應用

    1,是否對java Web中無處不在的Vo ,Dto比較無語呢?想要看看其中的數據,就必需不厭其煩的調用getXXX();所以寫了個BaseVo 只要繼承它,
    然后直接調用它的toString()方法,即可將里面的值都打印出來
        public String toString() {
            Field[] fields 
    = this.getClass().getDeclaredFields();
            StringBuffer result 
    = new StringBuffer();
            
    for (Field field : fields) {
                
    // System.out.prIntegerln(field.getName());
                String fieldName = field.getName();
                String methodName 
    = "get" + fieldName.substring(01).toUpperCase()
                        
    + fieldName.substring(1);
                result.append(fieldName 
    + ":");
                Method method 
    = null;
                Object obj 
    = null;
                
    try {
                    method 
    = UserVo.class.getMethod(methodName);
                    obj 
    = method.invoke(thisnull);
                }
     catch (SecurityException e) {
                    
    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
     catch (NoSuchMethodException e) {
                    
    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
     catch (IllegalArgumentException e) {
                    
    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
     catch (IllegalAccessException e) {
                    
    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
     catch (InvocationTargetException e) {
                    
    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                
    if (obj != null{
                    result.append(obj);
                }
     else
                    result.append(
    "");
                result.append(
    "\n");
            }

            
    return result.toString();
        }


    2,2個同類型的Vo/Dto,需要將一個中的值填充到另外一個里去。正常方法需要set/get 如果字段一多,簡直是噩夢。而利用反射,可以輕易實現。
     1    public static void parseVO(Object obj, Object target)
     2            throws Exception, NoSuchMethodException {
     3        for (Field field : obj.getClass().getDeclaredFields()) {
     4            Method getMethod = obj.getClass().getMethod(
     5                    "get" + field.getName().substring(01).toUpperCase()
     6                            + field.getName().substring(1));
     7            Object result = getMethod.invoke(obj);
     8            if (result != null{
     9                Method setMethod = target.getClass().getMethod(
    10                        "set" + field.getName().substring(01).toUpperCase()
    11                                + field.getName().substring(1), result.getClass());
    12                setMethod.invoke(target, result);
    13            }

    14        }

    15    }

    posted on 2009-01-23 12:04 LinuxChan 閱讀(497) 評論(2)  編輯  收藏

    評論

    # re: 兩個很簡單的java反射應用 2009-01-30 09:58 sorcerer

    反射的性能問題需要斟酌一下.  回復  更多評論   

    # re: 兩個很簡單的java反射應用 2009-02-13 14:19 Rory

    有時候比較簡單的也的確沒必要用反射,畢竟性能方面的考慮  回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    常用鏈接

    留言簿(2)

    隨筆檔案

    友情鏈接

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品无码99在线观看| 综合亚洲伊人午夜网 | 亚洲国产精品18久久久久久 | 亚洲成A人片在线观看无码3D| 成人无码精品1区2区3区免费看| 久久精品国产亚洲av影院| 在线观看免费宅男视频| 精品久久久久久国产免费了| 亚洲一卡2卡4卡5卡6卡残暴在线| 亚洲国产精品丝袜在线观看| 97精品免费视频| 日亚毛片免费乱码不卡一区| 亚洲四虎永久在线播放| 免费高清小黄站在线观看 | 亚洲精品视频在线观看免费| 黄色免费在线观看网址| 亚洲最大在线视频| 国产成人亚洲综合无码| 久草在视频免费福利| 永久免费AV无码网站国产| 亚洲av中文无码乱人伦在线观看| 亚洲av无码成h人动漫无遮挡| 全免费a级毛片免费看不卡 | 免费在线观看毛片| 色影音免费色资源| 国内精品免费视频精选在线观看| 青青青亚洲精品国产| 精品亚洲aⅴ在线观看| 亚洲无线一二三四区手机| 日韩av无码成人无码免费| 在线播放免费人成毛片乱码 | 毛片免费全部免费观看| 一区二区三区四区免费视频 | 亚洲精品自在线拍| 亚洲精品午夜无码专区| 四虎影院永久免费观看| 91香蕉视频免费| 精品无码人妻一区二区免费蜜桃| 中文字幕在线免费视频| 一级女人18片毛片免费视频| 亚洲国产精品嫩草影院|