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

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

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

    花開(kāi)有時(shí)

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

    java Method類(lèi)試用

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

           沒(méi)有過(guò),沒(méi)關(guān)系。JDK5.0文檔與google是我最好的老師。
           下面就是我的成果了:
           第一步,先建個(gè)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 };

        
    //這是測(cè)試數(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類(lèi)
                Class model = Class.forName("test.Model");
                
    //獲得Model類(lèi)的實(shí)例
                Object object = model.newInstance();
                
    for (int i = 0; i < ALL.length; i++{
                    
    //獲得Model類(lèi)的set方法,參數(shù)為String類(lèi)型
                    Method setMethod = model.getMethod("set" + ALL[i], String.class);
                    
    //調(diào)用set方法
                    setMethod.invoke(object, MODELDATA[i]);

                    
    //獲得Model類(lèi)的get方法,無(wú)參數(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,大功告成!
            成功后的思考:我只要在一個(gè)sorter類(lèi)里添加一個(gè)classname的參數(shù),添加一個(gè)methodName的參數(shù)(類(lèi)型為String[]),用一個(gè)for循環(huán)就有可能用一個(gè)sorter類(lèi)為每個(gè)tableview加入排序的功能。

    posted on 2007-12-23 14:07 花開(kāi)有時(shí) 閱讀(5886) 評(píng)論(4)  編輯  收藏 所屬分類(lèi): java

    評(píng)論

    # re: java Method類(lèi)試用  回復(fù)  更多評(píng)論   

    hao
    2009-02-24 15:21 | atomy

    # re: java Method類(lèi)試用  回復(fù)  更多評(píng)論   

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

    # re: java Method類(lèi)試用  回復(fù)  更多評(píng)論   

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

    # re: java Method類(lèi)試用  回復(fù)  更多評(píng)論   

    我最近也遇到類(lèi)似問(wèn)題
    我的解決辦法是用泛型解決和javabean的內(nèi)省機(jī)制可以
    做出一個(gè)通用類(lèi)
    不管傳什么類(lèi)進(jìn)來(lái),返回這個(gè)類(lèi)的LIST相關(guān)信息:)
    可以試試
    2012-07-16 16:48 | 土撥鼠
    主站蜘蛛池模板: 国产精品亚洲一区二区三区在线| 亚欧免费无码aⅴ在线观看| 日本免费一区二区三区最新 | 毛片基地免费观看| 日韩亚洲不卡在线视频中文字幕在线观看 | 中文有码亚洲制服av片| 久久午夜伦鲁片免费无码| 亚洲精品中文字幕无码AV| 国产成人无码免费看视频软件| 久久亚洲精品专区蓝色区| 日韩免费a级在线观看| 国产成人亚洲综合a∨| 亚洲视频在线一区二区| 精品国产麻豆免费人成网站| 国产成人精品曰本亚洲79ren| 一本久久A久久免费精品不卡| 久久精品国产精品亚洲人人 | 亚洲人成网亚洲欧洲无码| 亚洲人成网站色在线入口| 久久免费观看国产精品| 亚洲久悠悠色悠在线播放| 亚洲国产一区二区三区| 精品国产麻豆免费人成网站| 亚洲精品中文字幕| 亚洲精品高清无码视频| 97无码免费人妻超级碰碰夜夜| 免费无码H肉动漫在线观看麻豆| 亚洲国产精品无码第一区二区三区| 亚洲妇熟XXXX妇色黄| 午夜亚洲国产成人不卡在线| av免费不卡国产观看| 最好免费观看高清在线| ww在线观视频免费观看| 国产人成网在线播放VA免费| 亚洲精品女同中文字幕| 亚洲人成影院在线高清| 亚洲午夜精品久久久久久人妖| 精品亚洲成α人无码成α在线观看| 成人黄页网站免费观看大全| 亚洲毛片在线免费观看| 国产成人AV片无码免费|