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

          ???}
          }


          主站蜘蛛池模板: 榆树市| 梁平县| 禹城市| 秀山| 双流县| 溆浦县| 宣恩县| 徐闻县| 师宗县| 汝阳县| 老河口市| 库尔勒市| 同江市| 郸城县| 广州市| 鹿邑县| 建阳市| 民权县| 云霄县| 正镶白旗| 阿鲁科尔沁旗| 榆中县| 荔浦县| 金门县| 乳源| 巨野县| 桦甸市| 南木林县| 昆明市| 赣榆县| 兴隆县| 驻马店市| 准格尔旗| 江达县| 故城县| 浙江省| 平武县| 南宁市| 安多县| 石渠县| 桃园市|