| 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()); | 
|         } | 
|     } | 
|   | 
| } |