public static <M> void merge( M destination,M target) throws Exception { BeanInfo beanInfo = Introspector.getBeanInfo(target.getClass()); // Iterate over all the attributes for (PropertyDescriptor descriptor : beanInfo.getPropertyDescriptors()) { // Only copy writable attributes if (descriptor.getWriteMethod() != null) { Object originalValue = descriptor.getReadMethod() .invoke(target); // Only copy values values where the destination values is null if (originalValue == null) { Object defaultValue = descriptor.getReadMethod().invoke( destination); descriptor.getWriteMethod().invoke(target, defaultValue); } } }
原文:https://www.cnblogs.com/song1024/p/13297305.html