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

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

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

    隨筆-55  評論-208  文章-0  trackbacks-0
    問題是這樣的,我看到原來有一個方法是根據name的名稱調用getName()這個方法。
    然后方法的實現是使用字符串的判斷來實現的
    代碼如下:
    public Object getOrderby() {
            
    if (ORDER_TITLE.equals(this.ordered)) {
                
    return getTitle();
            }
     else if (ORDER_RENDERDATE.equals(this.ordered)) {
                
    return getRenderDate();
            }
     else if (ORDER_CREATEDATE.equals(this.ordered)) {
                
    return getCreateDate();
            }
     else if (ORDER_LASTMODIFIED.equals(this.ordered)) {
                
    return getLastModified();
            }
     else {
                
    return getTitle();
            }

        }

    這樣的話如果以后新增get方法就意味著要增加這個getOrderby()方法的判斷。
    所以我決定用類反射來改造這個方法,首先定義一個doGetMethod的方法
     private Object doGetMethod(String methodName) throws Exception {
            Object result 
    = null;
            Object[] eo 
    = new Object[] {};
            String getMethodName 
    = "get" + methodName.toLowerCase();
            Method[] methods 
    = getClass().getMethods();
            
    for (int i = 0; i < methods.length; i++{
                Method method 
    = methods[i];
                
    if (getMethodName.equals(method.getName().toLowerCase())) {
                    result 
    = method.invoke(this, eo);
                }

            }

            
    return result;
        }
    這里根據methodName組合成getMethodName,然后到Method[]中找這個Method,然后用invoke調用這個方法
    這里要說明invoke這個方法的參數是第一個參數是指定包含方法的類,第二個參數是指定方法需要的參數。
    最后修改原來的getOrderBy
      public Object getOrderby() {
            Object obj 
    = getTitle();
            
    try {
                obj 
    = doGetMethod(getOrdered());
            }
     catch (Exception e) {
                
    return obj;
            }

            
    return obj;
        }
    posted on 2007-04-12 15:36 rocket 閱讀(1918) 評論(3)  編輯  收藏

    評論:
    # re: 根據name調用getName方法 2007-04-12 17:36 | G_G
    沙發
      回復  更多評論
      
    # re: 根據name調用getName方法 2007-04-12 17:38 | popoer
    good!  回復  更多評論
      
    # re: 根據name調用getName方法 2007-04-12 19:57 | 劉甘泉
    把簡單的東西弄復雜了,如果方法固定的話 用 if else 效果更好,如果需要隨時更改的話,用interface 不同實現 +反射都好用的多  回復  更多評論
      

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲AV中文无码乱人伦下载| 色噜噜亚洲男人的天堂| 午夜性色一区二区三区免费不卡视频 | 全黄A免费一级毛片| 亚洲人成依人成综合网| 成人超污免费网站在线看| 国产精品福利在线观看免费不卡| 91大神亚洲影视在线| 亚洲精品第一国产综合亚AV| 亚洲精品视频久久久| 免费毛片a在线观看67194| 成年网在线观看免费观看网址| 亚洲免费精彩视频在线观看| 波多野结衣久久高清免费| 亚洲成av人片在线天堂无| 亚洲AV永久精品爱情岛论坛| 好爽好紧好大的免费视频国产| 亚洲av无码成人影院一区| 精品国产精品久久一区免费式| 精品人妻系列无码人妻免费视频| 亚洲免费二区三区| 亚洲综合伊人久久综合| 性xxxx视频播放免费| 亚洲视频免费在线观看| 边摸边吃奶边做爽免费视频网站| 亚洲国产成人精品久久| 亚洲精品国产品国语在线| 国产乱弄免费视频| 国产免费毛不卡片| 三年片在线观看免费大全电影 | 国产午夜亚洲不卡| 国产精品久久香蕉免费播放| 永久在线免费观看| 国产成人免费AV在线播放 | 免费看内射乌克兰女| 亚洲欧洲日本在线观看| 久久国产精品亚洲综合| 国产午夜亚洲不卡| 亚洲免费在线观看| 免费永久国产在线视频| 最近免费中文字幕4|