From 9f7eda47feca4e515bd3c291d9b20ed09cdc020d Mon Sep 17 00:00:00 2001 From: ZhouXY108 Date: Tue, 24 Dec 2024 17:41:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20EnumTools=20=E4=B8=AD?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E7=9A=84=E5=8F=82=E6=95=B0=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plusone/commons/util/EnumTools.java | 103 ++++++++---------- 1 file changed, 47 insertions(+), 56 deletions(-) diff --git a/src/main/java/xyz/zhouxy/plusone/commons/util/EnumTools.java b/src/main/java/xyz/zhouxy/plusone/commons/util/EnumTools.java index 8f2e4d6..37b53a1 100644 --- a/src/main/java/xyz/zhouxy/plusone/commons/util/EnumTools.java +++ b/src/main/java/xyz/zhouxy/plusone/commons/util/EnumTools.java @@ -34,18 +34,18 @@ public final class EnumTools { /** * 通过 ordinal 获取枚举实例 * - * @param 枚举的类型 - * @param clazz 枚举的类型信息 - * @param ordinal 序号 + * @param 枚举的类型 + * @param enumType 枚举的类型信息 + * @param ordinal 序号 * @return 枚举对象 * @deprecated 不推荐使用枚举的 ordinal。 */ @Deprecated - public static > E valueOf(Class clazz, int ordinal) { // NOSONAR 该方法弃用,但不删掉 - AssertTools.checkNotNull(clazz, "Clazz must not be null."); - E[] values = clazz.getEnumConstants(); + public static > E valueOf(Class enumType, int ordinal) { // NOSONAR 该方法弃用,但不删掉 + AssertTools.checkNotNull(enumType, "Enum type must not be null."); + E[] values = enumType.getEnumConstants(); AssertTools.checkCondition((ordinal >= 0 && ordinal < values.length), - () -> new EnumConstantNotPresentException(clazz, Integer.toString(ordinal))); + () -> new EnumConstantNotPresentException(enumType, Integer.toString(ordinal))); return values[ordinal]; } @@ -53,25 +53,23 @@ public final class EnumTools { * 通过 ordinal 获取枚举实例 * * @param 枚举的类型 - * @param clazz 枚举的类型信息 + * @param enumType 枚举的类型信息 * @param ordinal 序号 * @param defaultValue 默认值 * @return 枚举对象 * @deprecated 不推荐使用枚举的 ordinal。 */ @Deprecated - public static > E valueOf(Class clazz, @Nullable Integer ordinal, E defaultValue) { // NOSONAR 该方法弃用,但不删掉 - if (null == ordinal) { - return defaultValue; - } - return valueOf(clazz, ordinal); + public static > E valueOf(Class enumType, // NOSONAR 该方法弃用,但不删掉 + @Nullable Integer ordinal, E defaultValue) { + return null == ordinal ? defaultValue : valueOf(enumType, ordinal); } /** * 通过 ordinal 获取枚举实例 * * @param 枚举的类型 - * @param clazz 枚举的类型信息 + * @param enumType 枚举的类型信息 * @param ordinal 序号 * @param defaultValue 默认值 * @return 枚举对象 @@ -79,29 +77,26 @@ public final class EnumTools { */ @Deprecated public static > E getValueOrDefault( // NOSONAR 该方法弃用,但不删掉 - Class clazz, + Class enumType, @Nullable Integer ordinal, Supplier defaultValue) { - if (null == ordinal) { - return defaultValue.get(); - } - return valueOf(clazz, ordinal); + return null == ordinal ? defaultValue.get() : valueOf(enumType, ordinal); } /** * 通过 ordinal 获取枚举实例 * - * @param 枚举的类型 - * @param clazz 枚举的类型信息 - * @param ordinal 序号 + * @param 枚举的类型 + * @param enumType 枚举的类型信息 + * @param ordinal 序号 * @return 枚举对象 * @deprecated 不推荐使用枚举的 ordinal。 */ @Deprecated - public static > E getValueOrDefault(Class clazz, @Nullable Integer ordinal) { // NOSONAR 该方法弃用,但不删掉 - return getValueOrDefault(clazz, ordinal, () -> { - AssertTools.checkNotNull(clazz, "Clazz must not be null."); - E[] values = clazz.getEnumConstants(); + public static > E getValueOrDefault(Class enumType, @Nullable Integer ordinal) { // NOSONAR 该方法弃用,但不删掉 + return getValueOrDefault(enumType, ordinal, () -> { + AssertTools.checkNotNull(enumType, "Enum type must not be null."); + E[] values = enumType.getEnumConstants(); return values[0]; }); } @@ -109,69 +104,65 @@ public final class EnumTools { /** * 通过 ordinal 获取枚举实例 * - * @param 枚举的类型 - * @param clazz 枚举的类型信息 - * @param ordinal 序号 + * @param 枚举的类型 + * @param enumType 枚举的类型信息 + * @param ordinal 序号 * @return 枚举对象 * @deprecated 不推荐使用枚举的 ordinal。 */ @Deprecated - public static > E getValueNullable(Class clazz, @Nullable Integer ordinal) { // NOSONAR 该方法弃用,但不删掉 - return valueOf(clazz, ordinal, null); + public static > E getValueNullable(Class enumType, @Nullable Integer ordinal) { // NOSONAR 该方法弃用,但不删掉 + return valueOf(enumType, ordinal, null); } - public static > Integer checkOrdinal(Class clazz, Integer ordinal) { - AssertTools.checkNotNull(clazz, "Clazz must not be null."); + public static > Integer checkOrdinal(Class enumType, Integer ordinal) { + AssertTools.checkNotNull(enumType, "Enum type must not be null."); AssertTools.checkNotNull(ordinal, "Ordinal must not be null."); - E[] values = clazz.getEnumConstants(); - if (ordinal >= 0 && ordinal < values.length) { - return ordinal; - } - throw new EnumConstantNotPresentException(clazz, Integer.toString(ordinal)); + E[] values = enumType.getEnumConstants(); + AssertTools.checkCondition(ordinal >= 0 && ordinal < values.length, + () -> new EnumConstantNotPresentException(enumType, Integer.toString(ordinal))); + return ordinal; } /** * 校验枚举的 ordinal。 * - * @param 枚举类型 - * @param clazz 枚举类型 - * @param ordinal The ordinal + * @param 枚举类型 + * @param enumType 枚举类型 + * @param ordinal The ordinal * @return The ordinal */ @Nullable - public static > Integer checkOrdinalNullable(Class clazz, @Nullable Integer ordinal) { - return checkOrdinalOrDefault(clazz, ordinal, null); + public static > Integer checkOrdinalNullable(Class enumType, @Nullable Integer ordinal) { + return checkOrdinalOrDefault(enumType, ordinal, null); } /** * 校验枚举的 ordinal,如果 ordinal 为 {@code null},则返回 {@code 0}。 * - * @param 枚举类型 - * @param clazz 枚举类型 - * @param ordinal The ordinal + * @param 枚举类型 + * @param enumType 枚举类型 + * @param ordinal The ordinal * @return The ordinal */ @Nullable - public static > Integer checkOrdinalOrDefault(Class clazz, @Nullable Integer ordinal) { - return checkOrdinalOrDefault(clazz, ordinal, 0); + public static > Integer checkOrdinalOrDefault(Class enumType, @Nullable Integer ordinal) { + return checkOrdinalOrDefault(enumType, ordinal, 0); } /** * 校验枚举的 ordinal,如果 ordinal 为 {@code null},则返回 {@code defaultValue}。 * - * @param 枚举类型 - * @param clazz 枚举类型 - * @param ordinal The ordinal + * @param 枚举类型 + * @param enumType 枚举类型 + * @param ordinal The ordinal * @return The ordinal */ @Nullable public static > Integer checkOrdinalOrDefault( - Class clazz, + Class enumType, @Nullable Integer ordinal, @Nullable Integer defaultValue) { - if (ordinal != null) { - return checkOrdinal(clazz, ordinal); - } - return defaultValue; + return ordinal != null ? checkOrdinal(enumType, ordinal) : defaultValue; } }