posts - 165, comments - 198, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          屬性填充 ( 懶人版)

          Posted on 2007-04-20 10:09 G_G 閱讀(365) 評論(0)  編輯  收藏 所屬分類: Inspiration
          主要類先上

          package ?myUtil;

          import ?java.lang.reflect.InvocationTargetException;
          import ?java.lang.reflect.Method;
          import ?java.util.Enumeration;
          import ?java.util.Hashtable;
          import ?java.util.Map;
          import ?java.util.Vector;

          public ? class ?CopyAttribute? {
          ????
          public ? static ? void ?copy(Object?bn1,Object?bn2)? throws ?Exception {
          ????????Hashtable?m1?
          = ? new ?Hashtable();
          ????????Hashtable?m2?
          = ? new ?Hashtable();
          ????????
          ????????
          // 取出?類?一?的?set?方法
          ????????Method[]?me1? = ??bn1.getClass().getMethods()?;
          ????????
          for ( int ?i = 0 ;i < me1.length;i ++ ) {
          ????????????String?name?
          = ?me1[i].getName()?;
          ????????????
          if (?name.indexOf( " set " ) == 0 ?) {
          ????????????????String?Att?
          = ?(name.substring( 3 ,name.length())).toUpperCase();
          ????????????????m1.put(Att,me1[i]);
          ????????????}

          ????????}

          ????????
          ????????
          // ????取出?類?二?的?get?方法
          ????????Method[]?me2? = ??bn2.getClass().getMethods()?;
          ????????
          for ( int ?i = 0 ;i < me2.length;i ++ ) {
          ????????????String?name?
          = ?me2[i].getName()?;
          ????????????
          if (?name.indexOf( " get " ) == 0 ?) {
          ????????????????String?Att?
          = ?(name.substring( 3 ,name.length())).toUpperCase();
          ????????????????m2.put(Att,me2[i]);
          ????????????}

          ????????}

          ????????
          ????????Enumeration?en2?
          = ??m2.keys();
          ????????Enumeration?en1?
          = ??m1.keys();
          ????????
          ????????
          while (en2.hasMoreElements()) {
          ????????????String?Att?
          = ?(String)en2.nextElement();
          ????????????Method?get?
          = ?(Method)m2.get(Att);
          ????????????Method?set?
          = ?(Method)m1.get(Att);
          ????????????
          ????????????
          if (set == null ) continue ;
          ????????????
          ????????????set.invoke(bn1,
          new ?Object[] {?get.invoke(bn2, new ?Object[] {} )?} );
          ????????}

          ????????
          ????}

          }




          運行
          }package?test;

          import?myUtil.CopyAttribute;
          import?Bean.Bean1;
          import?Bean.Bean2;
          import?junit.framework.TestCase;

          public?class?test?extends?TestCase?{

          ????
          protected?void?setUp()?throws?Exception?{
          ????????
          super.setUp();
          ????}


          ????
          protected?void?tearDown()?throws?Exception?{
          ????????
          super.tearDown();
          ????}

          ????
          ????
          public?void?testMyCopy()?throws?Exception{
          ????????
          ????????Bean1?b1?
          =?new?Bean1();
          ????????b1.setAvg(
          23);
          ????????b1.setName(
          "liukaiyi");
          ????????
          ????????Bean2?b2?
          =?new?Bean2();
          ????????b2.setName(null);
          ????????CopyAttribute.copy(b2,b1);
          ????????
          ????????assertNotNull(b2.getName());

          ???}
          }


          主站蜘蛛池模板: 伊川县| 合作市| 汉中市| 体育| 罗定市| 绿春县| 贵定县| 营山县| 鹤峰县| 大足县| 双柏县| 山东省| 乌拉特前旗| 台州市| 巴东县| 金湖县| 延庆县| 宜章县| 长春市| 阳东县| 朝阳市| 荥阳市| 永福县| 商都县| 新宁县| 绥德县| 正镶白旗| 天峨县| 武川县| 龙海市| 漯河市| 新蔡县| 罗山县| 栖霞市| 潢川县| 寻乌县| 扬中市| 阿克| 邯郸市| 新源县| 仁化县|