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

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

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

    花開有時

    花開有時,花落有時,來有時,去有時。不撕扯,只關(guān)切;不紀(jì)念,只牽掛;不感動,只明白;不尋找,只記得。
    隨筆 - 24, 文章 - 0, 評論 - 54, 引用 - 0
    數(shù)據(jù)加載中……

    java Method類試用

            背景:在項(xiàng)目中有一堆javabean,要用在界面上畫一堆tableview,要對這一堆tableview進(jìn)行排序,因此要寫一堆sorter類(假如為每個tableview都寫一個的話),工作量比較大。
            思考:其實(shí)這些sorter類都是差不多的,只是調(diào)用的javabean不同,方法名稱不同,實(shí)現(xiàn)的原理,沒有什么不同,那么該如何使用一個sorter類就可對所有的tableview進(jìn)行排序呢?
            思考結(jié)果:也許可以用Class類與Method類,也就是什么reflect機(jī)制。
            困難:從來沒用過reflect機(jī)制。

           沒有過,沒關(guān)系。JDK5.0文檔與google是我最好的老師。
           下面就是我的成果了:
           第一步,先建個javabean:
    package test;

    public class Model {

        
    private String id;
        
    private String name;
        
    private String description;
        
        
    public Model() {
            id 
    = "id";
            name 
    = "name";
            description 
    = "description";
        }


        
    public String getId() {
            
    return id;
        }


        
    public void setId(String id) {
            
    this.id = id;
        }


        
    public String getName() {
            
    return name;
        }


        
    public void setName(String name) {
            
    this.name = name;
        }


        
    public String getDescription() {
            
    return description;
        }


        
    public void setDescription(String description) {
            
    this.description = description;
        }


    }


            第二步:
    package test;

    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;

    public class TestMethodReflect {

        
    public static final String ID = "Id";
        
    public static final String NAME = "Name";
        
    public static final String DESCRIPTION = "Description";

        
    //方法名集合
        public static final String[] ALL = { ID, NAME, DESCRIPTION };

        
    //這是測試數(shù)據(jù)
        public static final String[] MODELDATA = "1""Gavin",
                
    "this is model's test data" }
    ;

        
    /**
         * 
    @param args
         
    */

        
    public static void main(String[] args) {
            
    try {
                
    //獲得Model類
                Class model = Class.forName("test.Model");
                
    //獲得Model類的實(shí)例
                Object object = model.newInstance();
                
    for (int i = 0; i < ALL.length; i++{
                    
    //獲得Model類的set方法,參數(shù)為String類型
                    Method setMethod = model.getMethod("set" + ALL[i], String.class);
                    
    //調(diào)用set方法
                    setMethod.invoke(object, MODELDATA[i]);

                    
    //獲得Model類的get方法,無參數(shù)
                    Method getMethod = model.getMethod("get" + ALL[i], null);
                    
    //調(diào)用get方法,并輸出數(shù)據(jù)
                    System.out.println(getMethod.invoke(object, null));
                }

            }
     catch (ClassNotFoundException e) {
                
    // TODO Auto-generated catch block
                e.printStackTrace();
            }
     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();
            }
     catch (InstantiationException e) {
                
    // TODO Auto-generated catch block
                e.printStackTrace();
            }


        }


    }


            ok,大功告成!
            成功后的思考:我只要在一個sorter類里添加一個classname的參數(shù),添加一個methodName的參數(shù)(類型為String[]),用一個for循環(huán)就有可能用一個sorter類為每個tableview加入排序的功能。

    posted on 2007-12-23 14:07 花開有時 閱讀(5883) 評論(4)  編輯  收藏 所屬分類: java

    評論

    # re: java Method類試用  回復(fù)  更多評論   

    hao
    2009-02-24 15:21 | atomy

    # re: java Method類試用  回復(fù)  更多評論   

    頂一下:)
    2009-07-01 17:38 | jiaxun

    # re: java Method類試用  回復(fù)  更多評論   

    只是利用反射做這種工作會有點(diǎn)慢
    2009-08-23 00:49 | 王兵

    # re: java Method類試用  回復(fù)  更多評論   

    我最近也遇到類似問題
    我的解決辦法是用泛型解決和javabean的內(nèi)省機(jī)制可以
    做出一個通用類
    不管傳什么類進(jìn)來,返回這個類的LIST相關(guān)信息:)
    可以試試
    2012-07-16 16:48 | 土撥鼠
    主站蜘蛛池模板: 亚洲丰满熟女一区二区v| 无码视频免费一区二三区| 国产亚洲综合视频| 亚洲噜噜噜噜噜影院在线播放 | 亚洲国产精品日韩在线观看| 九月婷婷亚洲综合在线 | 亚洲色无码国产精品网站可下载| 亚洲阿v天堂在线| 久久99亚洲综合精品首页 | 亚洲精品GV天堂无码男同| 亚洲黑人嫩小videos| 亚洲成a人片在线观看日本| 亚洲国产精品国产自在在线| 成人免费AA片在线观看| 2022久久国产精品免费热麻豆| 大地资源中文在线观看免费版| 一级看片免费视频| 香港特级三A毛片免费观看| 亚洲av无一区二区三区| 亚洲老熟女五十路老熟女bbw| 亚洲伊人久久大香线蕉影院| 亚洲欧洲日产国产最新| 亚洲精品在线播放| 亚洲精品国产情侣av在线| 亚洲综合婷婷久久| 中文字幕亚洲精品| 亚洲经典在线中文字幕| 精品亚洲aⅴ在线观看| 亚洲好看的理论片电影| 一区二区三区亚洲| 亚洲视频在线观看网站| 亚洲酒色1314狠狠做| 亚洲人成人77777网站不卡 | 日韩免费一区二区三区在线| 蜜桃AV无码免费看永久| 亚洲w码欧洲s码免费| 最近高清中文字幕无吗免费看| 亚洲三级高清免费| 香蕉高清免费永久在线视频| 国产精品免费综合一区视频| 国产yw855.c免费视频|