<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 | 土撥鼠
    主站蜘蛛池模板: 中文字幕亚洲乱码熟女一区二区 | 亚洲国产中文字幕在线观看 | 亚洲码一区二区三区| 爱丫爱丫影院在线观看免费| 青青草原亚洲视频| 99久久免费国产精精品| 国产亚洲精品国产| 222www免费视频| 亚洲三级在线观看| 免费高清资源黄网站在线观看| 亚洲人成网站在线在线观看| 精品国产免费观看久久久| 亚洲第一综合天堂另类专| 国产一区二区三区免费看| 四虎精品免费永久免费视频| 亚洲精品无码乱码成人| 日韩精品极品视频在线观看免费| 亚洲成a人不卡在线观看| 成年女人视频网站免费m| 国产精品亚洲色婷婷99久久精品| 国产精品亚洲美女久久久| 日韩电影免费在线观看网站| 亚洲第一网站免费视频| 精品剧情v国产在免费线观看| 少妇亚洲免费精品| 久久亚洲精品成人AV| 成人性生活免费视频| gogo免费在线观看| 亚洲嫩草影院在线观看| 国产乱人免费视频| 二个人看的www免费视频| 亚洲国产精品日韩在线观看| 又爽又高潮的BB视频免费看| 日本免费在线观看| 亚洲欧美aⅴ在线资源| 国产亚洲精品国产| 日韩a在线观看免费观看| 一个人免费视频观看在线www| 亚洲高清一区二区三区| 亚洲日韩激情无码一区| 成年女人喷潮毛片免费播放|