package com.zy.common.utils; import com.core.exception.CoolException; import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; /** * Created by vincent on 2022/4/1 */ public class Synchro { public static void Copy(Object source, Object dest) { try { BeanInfo sourceBean = Introspector.getBeanInfo(source.getClass(),Object.class); PropertyDescriptor[] sourceProperty = sourceBean.getPropertyDescriptors(); BeanInfo destBean = Introspector.getBeanInfo(dest.getClass(),Object.class); PropertyDescriptor[] destProperty = destBean.getPropertyDescriptors(); for (PropertyDescriptor propertyDescriptor : sourceProperty) { for (PropertyDescriptor descriptor : destProperty) { if (propertyDescriptor.getName().equals(descriptor.getName()) && propertyDescriptor.getPropertyType() == descriptor.getPropertyType()) { Method readMethod = propertyDescriptor.getReadMethod(); Method writeMethod = descriptor.getWriteMethod(); if (null != writeMethod && null != readMethod) { writeMethod.invoke(dest, readMethod.invoke(source)); } } } } } catch (Exception e) { e.printStackTrace(); throw new CoolException("属性复制失败:" + e.getMessage()); } } }