import java.beans.PropertyDescriptor;import java.lang.reflect.InvocationTargetException;import java.util.Map;import org.apache.commons.beanutils.BeanUtils;import org.apache.commons.beanutils.PropertyUtils;public class CopyBean { /** * 比较一个对象,如是这个对象的某一个属性不为空,把他copy到另一个有这个属性的bean中 * * @param result 要copy到的bean * @param orig 原来BEAN * @throws InvocationTargetException * @throws IllegalAccessException */ public static void copyOrigNotNullPropertyToDestBean(Object result, Object orig) throws IllegalAccessException, InvocationTargetException { // Validate existence of the specified beans if (result == null) { throw new IllegalArgumentException("No destination bean specified"); } if (orig == null) { throw new IllegalArgumentException("No origin bean specified"); } if (orig instanceof Map) { throw new IllegalArgumentException("No support map"); } /* if (orig is a standard JavaBean) */ PropertyDescriptor origDescriptors[] = PropertyUtils.getPropertyDescriptors(orig); for (int i = 0; i < origDescriptors.length; i++) { String name = origDescriptors[i].getName(); if ("class".equals(name)) { continue; // No point in trying to set an object's class } if (PropertyUtils.isReadable(orig, name) && PropertyUtils.isWriteable(result, name)) { try { Object value1 = PropertyUtils.getSimpleProperty(orig, name); if (value1 != null) { if (PropertyUtils.isReadable(result, name) && PropertyUtils.isWriteable(result, name)) { BeanUtils.copyProperty(result, name, value1); } } } catch (NoSuchMethodException e) { } } } } }