javabean对象自动赋值给另一个javabean对象

把JavaBean的from的值自动set给to,省略了自己从from中get然后再set给to   

   public static Object convertBean2Bean(Object from, Object to) { 
        try { 
            BeanInfo beanInfo = Introspector.getBeanInfo(to.getClass()); 
            PropertyDescriptor[] ps = beanInfo.getPropertyDescriptors(); 

            for (PropertyDescriptor p : ps) { 
               Method getMethod = p.getReadMethod(); 
               Method setMethod = p.getWriteMethod(); 
               if (getMethod != null && setMethod != null) { 
                   try { 
                      Object result = getMethod.invoke(from); 
                      setMethod.invoke(to, result); 
                   } catch (Exception e) { 
                      // 如果from没有此属性的get方法,跳过 
                      continue; 
                   } 
               } 
            } 
        } catch (Exception e) { 
           e.printStackTrace(); 
        } 

        return to; 
    } 

    /** 
     * 不支持to继承(to是其他bean的子类) 
     */ 
   public static Object coverBean2Bean(Object from, Object to) { 
        Class fClass = from.getClass(); 
        Class tClass = to.getClass(); 
        // 拿to所有属性(如果有继承,父类属性拿不到) 
        Field[] cFields = tClass.getDeclaredFields(); 
        try { 
            for (Field field : cFields) { 
               String cKey = field.getName(); 
               // 确定第一个字母大写 
               cKey = cKey.substring(0, 1).toUpperCase() + cKey.substring(1); 

               Method fMethod; 
               Object fValue; 
               try { 
                    fMethod = fClass.getMethod("get" + cKey);// public方法 
                    fValue = fMethod.invoke(from);// 取getfKey的值 
               } catch (Exception e) { 
                 // 如果from没有此属性的get方法,跳过 
                 continue; 
               } 

                try { 
                    // 用fMethod.getReturnType(),而不用fValue.getClass() 
                    // 为了保证get方法时,参数类型是基本类型而传入对象时会找不到方法 
                    Method cMethod = tClass.getMethod("set" + cKey, fMethod.getReturnType()); 
                    cMethod.invoke(to, fValue); 
                } catch (Exception e) { 
                    // 如果to没有此属性set方法,跳过 
                    continue; 
                } 
            } 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 

        return to; 
    } 


   static final String spare = "======================================================\r\n"; 

   /**      * 打印bean信息 
     */ 
   public static void printInvoke(Object object) { 
      Method[] ms = object.getClass().getMethods(); 
      String str = spare; 
      str += "start log object: " + object.getClass().getSimpleName() + "\r\n"; 
      str += spare; 
      System.out.print(str); 

      for (int i = 0; i < ms.length; i++) { 
         if (ms[i].getName().indexOf("get") != -1 
             && !ms[i].getName().equals("getClass")) { 
             try { 
                 System.out.println(ms[i].getName() + " = " 
                 + ms[i].invoke(object)); 
             } catch (Exception e) { 
                 e.printStackTrace(); 
             } 
         } 
      } 

     System.out.println(spare); 
   } 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值