特定的需求需要根据前端传的字段名称设置值,这时候使用反射比较方便
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
public class ReflectionUtils {
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); }
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); }
}
|