ReflectUtils.java 863 B

12345678910111213141516171819202122232425262728293031
  1. package cn.iocoder.dashboard.util.object;
  2. import cn.hutool.core.util.ReflectUtil;
  3. import java.lang.reflect.Field;
  4. import java.lang.reflect.Modifier;
  5. /**
  6. * 反射 Util 工具类,解决 {@link cn.hutool.core.util.ReflectUtil} 无法满足的情况
  7. *
  8. * @author 芋道源码
  9. */
  10. public class ReflectUtils {
  11. public static void setFinalFieldValue(Object obj, String fieldName, Object value) {
  12. // 获得 Field
  13. if (obj == null) {
  14. return;
  15. }
  16. Field field = ReflectUtil.getField(obj.getClass(), fieldName);
  17. if (field == null) {
  18. return;
  19. }
  20. // 获得该 Field 的 modifiers 属性,为非 final
  21. ReflectUtil.setFieldValue(field, "modifiers", field.getModifiers() & ~Modifier.FINAL);
  22. // 真正,设置值
  23. ReflectUtil.setFieldValue(obj, field, value);
  24. }
  25. }