content: package org.ruoyi.common.core.utils;
  
  import cn.hutool.core.util.ObjectUtil;
  import lombok.AccessLevel;
  import lombok.NoArgsConstructor;
  
  import java.util.function.Function;
  
  /**
   * 对象工具类
   *
   * @author 秋辞未寒
   */
  @NoArgsConstructor(access = AccessLevel.PRIVATE)
  public class ObjectUtils extends ObjectUtil {
  
      /**
       * 如果对象不为空，则获取对象中的某个字段 ObjectUtils.notNullGetter(user, User::getName);
       *
       * @param obj 对象
       * @param func 获取方法
       * @return 对象字段
       */
      public static <T, E> E notNullGetter(T obj, Function<T, E> func) {
          if (isNotNull(obj) && isNotNull(func)) {
              return func.apply(obj);
          }
          return null;
      }
  
      /**
       * 如果对象不为空，则获取对象中的某个字段，否则返回默认值
       *
       * @param obj          对象
       * @param func         获取方法
       * @param defaultValue 默认值
       * @return 对象字段
       */
      public static <T, E> E notNullGetter(T obj, Function<T, E> func, E defaultValue) {
          if (isNotNull(obj) && isNotNull(func)) {
              return func.apply(obj);
          }
          return defaultValue;
      }
  
      /**
       * 如果值不为空，则返回值，否则返回默认值
       *
       * @param obj          对象
       * @param defaultValue 默认值
       * @return 对象字段
       */
      public static <T> T notNull(T obj, T defaultValue) {
          if (isNotNull(obj)) {
              return obj;
          }
          return defaultValue;
      }
  
  }
  