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());

          ???}
          }


          主站蜘蛛池模板: 钟祥市| 北京市| 武安市| 扎鲁特旗| 安新县| 洛浦县| 庆云县| 稻城县| 明水县| 淄博市| 凤庆县| 都匀市| 安岳县| 手游| 边坝县| 托克逊县| 拉孜县| 奉新县| 土默特左旗| 凤台县| 额济纳旗| 措勤县| 平乡县| 富顺县| 南通市| 灵武市| 罗源县| 滨州市| 广安市| 延庆县| 偃师市| 托克逊县| 南宫市| 车险| 扎鲁特旗| 女性| 东城区| 苏州市| 承德市| 嵩明县| 紫金县|