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

          屬性填充 ( 懶人版)

          Posted on 2007-04-20 10:09 G_G 閱讀(371) 評論(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());

          ???}
          }


          主站蜘蛛池模板: 英山县| 罗田县| 缙云县| 马公市| 财经| 子长县| 化州市| 淳安县| 沁阳市| 聂荣县| 亚东县| 高陵县| 陕西省| 阿图什市| 新民市| 勃利县| 高邑县| 乌鲁木齐县| 石城县| 宝应县| 九龙城区| 壶关县| 施甸县| 磐安县| 弥渡县| 南康市| 盐池县| 通州市| 门源| 海伦市| 贵定县| 凉山| 永兴县| 读书| 洪洞县| 潜江市| 武宣县| 江口县| 阿合奇县| 西青区| 固安县|