• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    J2EE綜合:如何實現javabean的屬性拷貝

    發布: 2008-7-09 15:13 | 作者: 不詳 | 來源: | 查看: 77次 | 進入軟件測試論壇討論

    領測軟件測試網 在struts的實踐過程中,經常兩個javabean交換數據的情況,如ActionForm與數據庫中的表相關的bean交換數據。通常情況下要寫很多get和set語句,一個個屬性依次拷貝。這樣的話,如此重復繁重的工作讓程序員感覺不到編程的快樂。于是在網上查相關資料知,在apache.org有一個project:common-beanutil,提供的一個BeanUtil類,這個類有一個靜態方法BeanUtil.copyProperties()實現了該功能。后來我在與java相關的書上知道的java的反射機制(reflect),償試著并實現了兩個javabean的屬性拷貝功能。
    import java.lang.reflect.*;
    /**
    @author Xiaobo Zheng
    @date 2005-12-28
    */
    public class BeanUtil2{
           /**
           @parameter Object obj1,Object obj2
           @return Object
           用到反射機制
           此方法將調用obj1的getter方法,將得到的值作為相應的參數傳給obj2的setter方法
           注意,obj1的getter方法和obj2方法必須是public類型
           */
           public static Object CopyBeanToBean(Object obj1,Object obj2) throws Exception{
                  Method[] method1=obj1.getClass().getMethods();
                  Method[] method2=obj2.getClass().getMethods();
                  String methodName1;
                  String methodFix1;
                  String methodName2;
                  String methodFix2;
                  for(int i=0;i                     methodName1=method1[i].getName();
                         methodFix1=methodName1.substring(3,methodName1.length());
                         if(methodName1.startsWith("get")){
                                for(int j=0;j                                   methodName2=method2[j].getName();
                                       methodFix2=methodName2.substring(3,methodName2.length());
                                       if(methodName2.startsWith("set")){
                                              if(methodFix2.equals(methodFix1)){
                                                     Object[] objs1=new Object[0];
                                                     Object[] objs2=new Object[1];
                                                     objs2[0]=method1[i].invoke(obj1,objs1);//激活obj1的相應的get的方法,objs1數組存放調用該方法的參數,此例中沒有參數,該數組的長度為0
                                                     method2[j].invoke(obj2,objs2);//激活obj2的相應的set的方法,objs2數組存放調用該方法的參數
                                                     continue;                                   
                                              }
                                       }
                                }
                         }
                  }
                  return obj2;
           }
    }
    再建一個javabean,并測試
    import java.lang.reflect.*;
    public class User {
        private String name;
        private String id; 
        public void setName(String name){
            this.name=name;
        }
        public String getName(){
            return this.name;
        }
        public void setId(String id){
            this.id=id;
        }
        public String getId(){
            return this.id;
        }
        public static void main(String[] args) throws Exception{
            User u1=new User();
            u1.setName("zxb");
            u1.setId("3286");
            User u2=new User();
            u2=(User)BeanUtil2.CopyBeanToBean(u1,u2);
            System.out.println(u2.getName());
            System.out.println(u2.getId());          
        }
    }
    編譯后并執行輸出結果
    zxb
    3286
    成功!

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: Get JavaBean Javabean javaBean 數據庫 屬性 javabean 拷貝 get


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>