java反射bean to bean
/** * Copyright © 2018 fwz Info. Tech Ltd. All rights reserved. * * @Package: com.sm.utils * @author: 冯文哲 * @date: 2018年7月3日 上午11:53:09 */ package com.sm.utils; import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; /** * * @author: 冯文哲 * @date: 2018年7月3日 上午11:53:09 * */ public class CopyUtils { /** * * @Description:复制属性 bean to bean * @author: 冯文哲 * @date: 2018年7月3日 上午11:54:09 * @param source 数据元Bean * @param dest 目标实体bean * @throws Exception * */ public static void Copy(Object baseBean, Object targetBean) throws Exception { // 获取属性 BeanInfo sourceBean = Introspector.getBeanInfo(baseBean.getClass(),Object.class); PropertyDescriptor[] sourceProperty = sourceBean.getPropertyDescriptors(); BeanInfo destBean = Introspector.getBeanInfo(targetBean.getClass(),Object.class); PropertyDescriptor[] destProperty = destBean.getPropertyDescriptors(); try { for (int i = 0; i < sourceProperty.length; i++) { for (int j = 0; j < destProperty.length; j++) { if (sourceProperty[i].getName().equals(destProperty[j].getName()) && sourceProperty[i].getPropertyType() == destProperty[j].getPropertyType()) { // 调用source的getter方法和dest的setter方法 destProperty[j].getWriteMethod().invoke(targetBean,sourceProperty[i].getReadMethod().invoke(baseBean)); break; } } } } catch (Exception e) { throw new Exception("属性复制失败:" + e.getMessage()); } } }