/**
   * 从一个对象提取另一个类型的值, 如: 从TransportOrderQe中提取父类TransportOrder, 以便送到服务器进行hibernate的持久化.
   *
   * @param fromObj
   * @param toClass
   * @return
   */
  public static Object extractObject(Object fromObj, Class toClass)
      throws InstantiationException, IllegalAccessException {
    if (fromObj == null || toClass == null) {
      return null;
    }
    Collection getters = ObjectUtil.getGetters(toClass);
    Object toObj = toClass.newInstance();
    for (Iterator iterator = getters.iterator(); iterator.hasNext(); ) {
      Method getter = (Method) iterator.next();
      String propertyName = ObjectUtil.getPropertyName(getter.getName());
      getter = getGetter(fromObj.getClass(), propertyName);
      try {
        // System.out.println(">>>prop name: " + propertyName + ", getter: " + getter);
        Method setter =
            toClass.getMethod(
                ObjectUtil.getSetterMethodName(propertyName), new Class[] {getter.getReturnType()});

        Object getterResult = getter.invoke(fromObj, new Object[0]);

        setter.invoke(toObj, new Object[] {getterResult});
      } catch (NoSuchMethodException ex) {
        continue;
      } catch (IllegalAccessException ex) {
        continue;
      } catch (InvocationTargetException ex) {
        continue;
      }
    }
    return toObj;
  }
  public static void copyFields(Object from, Object to) {
    Collection getters = ObjectUtil.getGetters(from.getClass());

    for (Iterator iterator = getters.iterator(); iterator.hasNext(); ) {
      Method getter = (Method) iterator.next();

      String propertyName = ObjectUtil.getPropertyName(getter.getName());

      try {
        Method setter =
            to.getClass()
                .getMethod(
                    ObjectUtil.getSetterMethodName(propertyName),
                    new Class[] {getter.getReturnType()});

        Object getterResult = getter.invoke(from, new Object[0]);

        setter.invoke(to, new Object[] {getterResult});
      } catch (NoSuchMethodException ex) {
        continue;
      } catch (IllegalAccessException ex) {
        continue;
      } catch (InvocationTargetException ex) {
        continue;
      }
    }
  }
 /** --------- 将所有的字段设为null ------------ */
 public static void emptyFields(Object obj) {
   Collection setters = ObjectUtil.getSetters(obj.getClass());
   for (Iterator iterator = setters.iterator(); iterator.hasNext(); ) {
     Method setter = (Method) iterator.next();
     try {
       Class[] paramCls = setter.getParameterTypes();
       if (paramCls[0] == boolean.class) {
         //
         setter.invoke(obj, new Object[] {Boolean.FALSE});
       } else {
         setter.invoke(obj, new Object[] {null});
       }
     } catch (IllegalAccessException ex) {
       continue;
     } catch (InvocationTargetException ex) {
       continue;
     }
   }
 }