package com.shhxzq.fin.lifeapp.biz.utils; import java.lang.reflect.Field; import java.lang.reflect.Modifier; /** * Bean工具类 * @author Gxx */ public class BeanUtils { /** * 拷贝属性-父类向子类拷贝(一层父类) * @param dest * @param origin * @throws Exception */ public static void copyPropertiesLevel1(Object dest, Object origin) throws Exception { if (!(dest.getClass().getSuperclass() == origin.getClass())) { throw new Exception("dest不是origin的子类"); } /** * 第一层父类 */ Class fatherClass = origin.getClass(); Field ff[] = fatherClass.getDeclaredFields(); for (int i = 0; i < ff.length; i++) { Field f = ff[i]; // 私有变量必须先设置Accessible为true f.setAccessible(true); // 修改final属性 Field modifiersField = Field.class.getDeclaredField("modifiers"); modifiersField.setAccessible(true); modifiersField.setInt(f, f.getModifiers() & ~Modifier.FINAL); f.set(dest, f.get(origin)); } } /** * 拷贝属性-父类向子类拷贝(两层父类) * @param dest * @param origin * @throws Exception */ public static void copyPropertiesLevel2(Object dest, Object origin) throws Exception { if (!(dest.getClass().getSuperclass() == origin.getClass())) { throw new Exception("dest不是origin的子类"); } /** * 第一层父类 */ Class fatherClass = origin.getClass(); Field ff[] = fatherClass.getDeclaredFields(); for (int i = 0; i < ff.length; i++) { Field f = ff[i]; // 私有变量必须先设置Accessible为true f.setAccessible(true); // 修改final属性 Field modifiersField = Field.class.getDeclaredField("modifiers"); modifiersField.setAccessible(true); modifiersField.setInt(f, f.getModifiers() & ~Modifier.FINAL); f.set(dest, f.get(origin)); } /** * 第二层父类 */ fatherClass = origin.getClass().getSuperclass(); ff = fatherClass.getDeclaredFields(); for (int i = 0; i < ff.length; i++) { Field f = ff[i]; // 私有变量必须先设置Accessible为true f.setAccessible(true); // 修改final属性 Field modifiersField = Field.class.getDeclaredField("modifiers"); modifiersField.setAccessible(true); modifiersField.setInt(f, f.getModifiers() & ~Modifier.FINAL); f.set(dest, f.get(origin)); } } }