woody před 2 roky
rodič
revize
8c3a9eb84d

+ 6 - 7
framework-base/src/main/java/com/chelvc/framework/base/util/ObjectUtils.java

@@ -132,8 +132,8 @@ public final class ObjectUtils {
      * @param <T>      对象类型泛型
      * @return 返回对象
      */
-    public static <T> T ifNull(T object, Supplier<T> supplier) {
-        return object == null ? supplier == null ? null : supplier.get() : object;
+    public static <T> T ifNull(T object, @NonNull Supplier<T> supplier) {
+        return object == null ? supplier.get() : object;
     }
 
     /**
@@ -145,8 +145,8 @@ public final class ObjectUtils {
      * @param <R>      返回对象类型泛型
      * @return 返回对象
      */
-    public static <T, R> R ifNull(T object, Function<T, R> function) {
-        return object == null || function == null ? null : function.apply(object);
+    public static <T, R> R ifNull(T object, @NonNull Function<T, R> function) {
+        return object == null ? null : function.apply(object);
     }
 
     /**
@@ -159,9 +159,8 @@ public final class ObjectUtils {
      * @param <R>      返回对象类型泛型
      * @return 返回对象
      */
-    public static <T, R> R ifNull(T object, Function<T, R> function, Supplier<R> supplier) {
-        return object == null || function == null ? ifNull(supplier, Supplier::get)
-                : ifNull(function.apply(object), supplier);
+    public static <T, R> R ifNull(T object, @NonNull Function<T, R> function, @NonNull Supplier<R> supplier) {
+        return object == null ? supplier.get() : ifNull(function.apply(object), supplier);
     }
 
     /**

+ 22 - 8
framework-base/src/main/java/com/chelvc/framework/base/util/StringUtils.java

@@ -200,6 +200,18 @@ public final class StringUtils {
         return isEmpty(first) ? second : first;
     }
 
+    /**
+     * 比较两个字符串中第一个是否为空,如果是则返回第二个字符串,否则返回第一个字符串
+     *
+     * @param first  第一个字符串
+     * @param second 第二个字符串提供者
+     * @param <T>    字符串类型
+     * @return 非空字符串
+     */
+    public static <T> T ifEmpty(T first, @NonNull Supplier<T> second) {
+        return isEmpty(first) ? second.get() : first;
+    }
+
     /**
      * 如果原始字符串不为空,则对原始字符串做对象适配
      *
@@ -216,10 +228,11 @@ public final class StringUtils {
     /**
      * 如果原始字符串不为空,则对原始字符串做对象适配,如果目标适配对象为空则返回默认值
      *
-     * @param original 原始字符串
-     * @param adapter  对象适配函数
-     * @param <T>      原始字符串类型
-     * @param <R>      适配目标对象类型
+     * @param original     原始字符串
+     * @param adapter      对象适配函数
+     * @param defaultValue 默认值
+     * @param <T>          原始字符串类型
+     * @param <R>          适配目标对象类型
      * @return 适配目标对象实例
      */
     public static <T, R> R ifEmpty(T original, @NonNull Function<T, R> adapter, R defaultValue) {
@@ -230,10 +243,11 @@ public final class StringUtils {
     /**
      * 如果原始字符串不为空,则对原始字符串做对象适配,如果目标适配对象为空则返回默认值
      *
-     * @param original 原始字符串
-     * @param adapter  对象适配函数
-     * @param <T>      原始字符串类型
-     * @param <R>      适配目标对象类型
+     * @param original  原始字符串
+     * @param adapter   对象适配函数
+     * @param defaulter 默认值提供者
+     * @param <T>       原始字符串类型
+     * @param <R>       适配目标对象类型
      * @return 适配目标对象实例
      */
     public static <T, R> R ifEmpty(T original, @NonNull Function<T, R> adapter, @NonNull Supplier<R> defaulter) {