--- title: Java反射获取和修改成员变量 date: 2019-12-25 13:38:05 description: Java反射获取和修改成员变量 categories: [技术总结] tags: [Java] --- 特定的需求需要根据前端传的字段名称设置值,这时候使用反射比较方便 ```java /** * 反射工具类 */ public class ReflectionUtils { /** * 根据传入的属性名字符串,获取对应的属性值 * * @param name * 属性名 * @param obj * 要获取的实例对象 */ public static Object getField(String name, Object obj) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { Class clazz = obj.getClass(); Field field = clazz.getDeclaredField(name); field.setAccessible(true); return field.get(obj); } /** * 根据传入的属性名字符串,修改对应的属性值 * * @param name * 属性名 * @param obj * 要修改的实例对象 * @param value * 修改后的新值 */ public static void setField(String name, Object obj, Object value) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { Class clazz = obj.getClass(); Field field = clazz.getDeclaredField(name); field.setAccessible(true); field.set(obj, value); } public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException { IncomeTaxDeclarationMain a = new IncomeTaxDeclarationMain(); a.row9 = BigDecimal.TEN; IncomeTaxDeclarationMain b = new IncomeTaxDeclarationMain(); setField("row9", b, getField("row9", a)); System.out.println(b.row9); } } ```