疯狂的狮子li
2021-10-27 695cb6d76b838b1e4cb161bae335faa948dca12a
ruoyi-common/src/main/java/com/ruoyi/common/utils/reflect/ReflectUtils.java
@@ -13,41 +13,41 @@
@SuppressWarnings("rawtypes")
public class ReflectUtils extends ReflectUtil {
   private static final String SETTER_PREFIX = "set";
    private static final String SETTER_PREFIX = "set";
   private static final String GETTER_PREFIX = "get";
    private static final String GETTER_PREFIX = "get";
   /**
    * 调用Getter方法.
    * 支持多级,如:对象名.对象名.方法
    */
   @SuppressWarnings("unchecked")
   public static <E> E invokeGetter(Object obj, String propertyName) {
      Object object = obj;
      for (String name : StringUtils.split(propertyName, ".")) {
         String getterMethodName = GETTER_PREFIX + StringUtils.capitalize(name);
         object = invoke(object, getterMethodName);
      }
      return (E) object;
   }
    /**
     * 调用Getter方法.
     * 支持多级,如:对象名.对象名.方法
     */
    @SuppressWarnings("unchecked")
    public static <E> E invokeGetter(Object obj, String propertyName) {
        Object object = obj;
        for (String name : StringUtils.split(propertyName, ".")) {
            String getterMethodName = GETTER_PREFIX + StringUtils.capitalize(name);
            object = invoke(object, getterMethodName);
        }
        return (E) object;
    }
   /**
    * 调用Setter方法, 仅匹配方法名。
    * 支持多级,如:对象名.对象名.方法
    */
   public static <E> void invokeSetter(Object obj, String propertyName, E value) {
      Object object = obj;
      String[] names = StringUtils.split(propertyName, ".");
      for (int i = 0; i < names.length; i++) {
         if (i < names.length - 1) {
            String getterMethodName = GETTER_PREFIX + StringUtils.capitalize(names[i]);
            object = invoke(object, getterMethodName);
         } else {
            String setterMethodName = SETTER_PREFIX + StringUtils.capitalize(names[i]);
            Method method = getMethodByName(object.getClass(), setterMethodName);
            invoke(object, method, value);
         }
      }
   }
    /**
     * 调用Setter方法, 仅匹配方法名。
     * 支持多级,如:对象名.对象名.方法
     */
    public static <E> void invokeSetter(Object obj, String propertyName, E value) {
        Object object = obj;
        String[] names = StringUtils.split(propertyName, ".");
        for (int i = 0; i < names.length; i++) {
            if (i < names.length - 1) {
                String getterMethodName = GETTER_PREFIX + StringUtils.capitalize(names[i]);
                object = invoke(object, getterMethodName);
            } else {
                String setterMethodName = SETTER_PREFIX + StringUtils.capitalize(names[i]);
                Method method = getMethodByName(object.getClass(), setterMethodName);
                invoke(object, method, value);
            }
        }
    }
}