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