From b9c7b5f4bf7396798b8ca10eba39632eeff3967b Mon Sep 17 00:00:00 2001 From: Looly Date: Sat, 13 Jul 2024 17:28:39 +0800 Subject: [PATCH] add methods --- .../hutool/core/text/CharSequenceUtil.java | 98 +++++++++++++++++-- .../org/dromara/hutool/core/util/ObjUtil.java | 61 ++++++------ 2 files changed, 117 insertions(+), 42 deletions(-) diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/text/CharSequenceUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/text/CharSequenceUtil.java index 4d044af86..71bfa2f54 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/text/CharSequenceUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/text/CharSequenceUtil.java @@ -30,6 +30,7 @@ import org.dromara.hutool.core.text.replacer.SearchReplacer; import org.dromara.hutool.core.text.split.SplitUtil; import org.dromara.hutool.core.util.ByteUtil; import org.dromara.hutool.core.util.CharsetUtil; +import org.dromara.hutool.core.util.ObjUtil; import java.nio.ByteBuffer; import java.nio.CharBuffer; @@ -100,8 +101,8 @@ public class CharSequenceUtil extends StrValidator { * * @param obj 对象 * @return 字符串 - * @since 4.1.3 * @see String#valueOf(Object) + * @since 4.1.3 */ public static String toString(final Object obj) { return String.valueOf(obj); @@ -133,6 +134,19 @@ public class CharSequenceUtil extends StrValidator { // endregion // region ----- defaultIf + + /** + * 当给定字符串为空字符串时,转换为""
+ * 此方法与{@link #toStringOrEmpty(Object)}不同的是,如果提供的{@link CharSequence}非String,则保持原状 + * + * @param str 被转换的字符串 + * @return 转换后的字符串 + * @see #toStringOrEmpty(Object) + */ + public static CharSequence emptyIfNull(final CharSequence str) { + return null == str ? EMPTY : str; + } + /** * 当给定字符串为空字符串时,转换为{@code null} * @@ -144,6 +158,54 @@ public class CharSequenceUtil extends StrValidator { return isEmpty(str) ? null : str; } + /** + *

如果给定字符串为{@code null}返回默认值 + *

{@code
+	 *   defaultIfNull(null, null);      // = null
+	 *   defaultIfNull(null, "");        // = ""
+	 *   defaultIfNull(null, "zz");      // = "zz"
+	 *   defaultIfNull("abc", *);        // = "abc"
+	 * }
+ * + * @param 字符串类型 + * @param str 被检查字符串,可能为{@code null} + * @param defaultValue 被检查字符串为{@code null}返回的默认值,可以为{@code null} + * @return 被检查字符串不为 {@code null} 返回原值,否则返回默认值 + * @see ObjUtil#defaultIfNull(Object, Object) + */ + public static T defaultIfNull(final T str, final T defaultValue) { + return ObjUtil.defaultIfNull(str, defaultValue); + } + + /** + * 如果给定字符串不为{@code null} 返回原值, 否则返回 {@link Supplier#get()} 提供的默认值 + * + * @param 被检查字符串类型 + * @param source 被检查字符串,可能为{@code null} + * @param defaultSupplier 为空时的默认值提供者 + * @return 被检查字符串不为 {@code null} 返回原值,否则返回 {@link Supplier#get()} 提供的默认值 + * @see ObjUtil#defaultIfNull(Object, Supplier) + */ + public static T defaultIfNull(final T source, final Supplier defaultSupplier) { + return ObjUtil.defaultIfNull(source, defaultSupplier); + } + + /** + * 如果给定字符串不为{@code null} 返回自定义handler处理后的结果,否则返回 {@link Supplier#get()} 提供的默认值 + * + * @param 返回值类型 + * @param 被检查对象类型 + * @param source 被检查对象,可能为{@code null} + * @param handler 非空时自定义的处理方法 + * @param defaultSupplier 为空时的默认值提供者 + * @return 被检查对象不为 {@code null} 返回处理后的结果,否则返回 {@link Supplier#get()} 提供的默认值 + * @since 6.0.0 + * @see ObjUtil#defaultIfNull(Object, Function, Supplier) + */ + public static R defaultIfNull(final T source, final Function handler, final Supplier defaultSupplier) { + return ObjUtil.defaultIfNull(source, handler, defaultSupplier); + } + /** * 如果给定对象为{@code null}或者 "" 返回默认值 * @@ -165,6 +227,18 @@ public class CharSequenceUtil extends StrValidator { return isEmpty(str) ? defaultValue : str; } + /** + * 如果给定对象为{@code null}或者{@code ""}返回原值, 否则返回自定义handler处理后的返回值 + * + * @param 被检查对象类型 + * @param str String 类型 + * @param defaultSupplier empty时的处理方法 + * @return 处理后的返回值 + */ + public static T defaultIfEmpty(final T str, final Supplier defaultSupplier) { + return isEmpty(str) ? defaultSupplier.get() : str; + } + /** * 如果给定对象为{@code null}或者{@code ""}返回defaultHandler处理的结果, 否则返回自定义handler处理后的返回值 * @@ -176,10 +250,7 @@ public class CharSequenceUtil extends StrValidator { * @return 处理后的返回值 */ public static V defaultIfEmpty(final T str, final Function handler, final Supplier defaultSupplier) { - if (isNotEmpty(str)) { - return handler.apply(str); - } - return defaultSupplier.get(); + return isEmpty(str) ? defaultSupplier.get() : handler.apply(str); } /** @@ -203,6 +274,18 @@ public class CharSequenceUtil extends StrValidator { return isBlank(str) ? defaultValue : str; } + /** + * 如果给定对象为{@code null}或者{@code ""}返回原值, 否则返回自定义handler处理后的返回值 + * + * @param 被检查对象类型 + * @param str String 类型 + * @param defaultSupplier empty时的处理方法 + * @return 处理后的返回值 + */ + public static T defaultIfBlank(final T str, final Supplier defaultSupplier) { + return isBlank(str) ? defaultSupplier.get() : str; + } + /** * 如果被检查对象为 {@code null} 或 "" 或 空白字符串时,返回默认值(由 defaultValueSupplier 提供);否则直接返回 * @@ -216,10 +299,7 @@ public class CharSequenceUtil extends StrValidator { * @since 5.7.20 */ public static V defaultIfBlank(final T str, final Function handler, final Supplier defaultSupplier) { - if (isBlank(str)) { - return defaultSupplier.get(); - } - return handler.apply(str); + return isBlank(str) ? defaultSupplier.get() : handler.apply(str); } // endregion diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/util/ObjUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/util/ObjUtil.java index 68537f6b7..9ff50afac 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/util/ObjUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/util/ObjUtil.java @@ -278,11 +278,11 @@ public class ObjUtil { /** *

如果给定对象为{@code null}返回默认值 *

{@code
-	 * ObjectUtil.defaultIfNull(null, null);      // = null
-	 * ObjectUtil.defaultIfNull(null, "");        // = ""
-	 * ObjectUtil.defaultIfNull(null, "zz");      // = "zz"
-	 * ObjectUtil.defaultIfNull("abc", *);        // = "abc"
-	 * ObjectUtil.defaultIfNull(Boolean.TRUE, *); // = Boolean.TRUE
+	 * ObjUtil.defaultIfNull(null, null);      // = null
+	 * ObjUtil.defaultIfNull(null, "");        // = ""
+	 * ObjUtil.defaultIfNull(null, "zz");      // = "zz"
+	 * ObjUtil.defaultIfNull("abc", *);        // = "abc"
+	 * ObjUtil.defaultIfNull(Boolean.TRUE, *); // = Boolean.TRUE
 	 * }
* * @param 对象类型 @@ -299,16 +299,29 @@ public class ObjUtil { * 如果给定对象不为{@code null} 返回原值, 否则返回 {@link Supplier#get()} 提供的默认值 * * @param 被检查对象类型 - * @param source 被检查对象,可能为{@code null} + * @param object 被检查对象,可能为{@code null} * @param defaultSupplier 为空时的默认值提供者 * @return 被检查对象不为 {@code null} 返回原值,否则返回 {@link Supplier#get()} 提供的默认值 * @since 5.4.6 */ - public static T defaultIfNull(final T source, final Supplier defaultSupplier) { - if (isNotNull(source)) { - return source; - } - return defaultSupplier.get(); + public static T defaultIfNull(final T object, final Supplier defaultSupplier) { + return isNull(object) ? defaultSupplier.get() : object; + } + + /** + * 如果给定对象不为{@code null} 返回自定义handler处理后的结果,否则返回默认值 + * + * @param 返回值类型 + * @param 被检查对象类型 + * @param object 被检查对象,可能为{@code null} + * @param handler 非空时自定义的处理方法 + * @param defaultValue 为空时的默认返回值 + * @return 被检查对象不为 {@code null} 返回处理后的结果,否则返回默认值 + * @since 6.0.0 + */ + public static R defaultIfNull(final T object, + final Function handler, final R defaultValue) { + return isNull(object) ? defaultValue : handler.apply(object); } /** @@ -316,17 +329,15 @@ public class ObjUtil { * * @param 返回值类型 * @param 被检查对象类型 - * @param source 被检查对象,可能为{@code null} + * @param object 被检查对象,可能为{@code null} * @param handler 非空时自定义的处理方法 * @param defaultSupplier 为空时的默认值提供者 * @return 被检查对象不为 {@code null} 返回处理后的结果,否则返回 {@link Supplier#get()} 提供的默认值 * @since 6.0.0 */ - public static R defaultIfNull(final T source, final Function handler, final Supplier defaultSupplier) { - if (isNotNull(source)) { - return handler.apply(source); - } - return defaultSupplier.get(); + public static R defaultIfNull(final T object, + final Function handler, final Supplier defaultSupplier) { + return isNull(object) ? defaultSupplier.get() : handler.apply(object); } /** @@ -354,22 +365,6 @@ public class ObjUtil { consumer.accept(source); } } - - /** - * 如果给定对象不为{@code null} 返回自定义handler处理后的结果,否则返回默认值 - * - * @param 返回值类型 - * @param 被检查对象类型 - * @param source 被检查对象,可能为{@code null} - * @param handler 非空时自定义的处理方法 - * @param defaultValue 为空时的默认返回值 - * @return 被检查对象不为 {@code null} 返回处理后的结果,否则返回默认值 - * @since 6.0.0 - */ - public static R defaultIfNull( - final T source, final Function handler, final R defaultValue) { - return isNull(source) ? defaultValue : handler.apply(source); - } // endregion /**