<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 不同實現 +反射都好用的多  回復  更多評論
      

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


    網站導航:
     
    主站蜘蛛池模板: 成人片黄网站色大片免费观看cn| 永久免费A∨片在线观看| 亚洲国产精品成人久久| 国产免费牲交视频| 国产乱子伦精品免费视频| 国产∨亚洲V天堂无码久久久| 免费A级毛片无码A∨中文字幕下载 | 亚洲乱码一区二区三区在线观看 | 亚洲国产天堂久久综合网站| 亚洲成av人片一区二区三区| 全免费a级毛片免费**视频| 免费人成网站永久| 亚洲国产成人片在线观看| 亚洲中文字幕成人在线| 24小时日本电影免费看| a毛片免费播放全部完整| 成人在线免费视频| 猫咪免费观看人成网站在线| 亚洲国产精品久久久久秋霞小| 亚洲国产成人精品电影| 亚洲精品福利网站| 18亚洲男同志videos网站| 亚洲av无码乱码国产精品| 亚洲VA中文字幕无码毛片| 夜夜春亚洲嫩草影院| 亚洲熟妇av一区二区三区| 久久精品国产精品亚洲艾草网美妙| 7m凹凸精品分类大全免费| 免费播放美女一级毛片| 国产精品亚洲专区在线播放| 亚洲1区2区3区精华液| 色婷婷亚洲一区二区三区| 国产成人人综合亚洲欧美丁香花 | 两个人看的www高清免费观看| 亚洲校园春色另类激情| 国产亚洲美日韩AV中文字幕无码成人| 亚洲国产小视频精品久久久三级 | 亚洲精品中文字幕| 亚洲色图在线播放| 少妇亚洲免费精品| 黄色成人网站免费无码av|