All Downloads are FREE. Search and download functionalities are using the official Maven repository.

spring.turbo.util.EnumUtils Maven / Gradle / Ivy

package spring.turbo.util;

import org.springframework.lang.Nullable;

import java.util.*;

/**
 * 枚举类型相关工具
 *
 * @author 应卓
 * @since 1.0.2
 */
public final class EnumUtils {

    /**
     * 私有构造方法
     */
    private EnumUtils() {
    }

    /**
     * 获取枚举值
     *
     * @param enumClass 枚举类型
     * @param enumName  枚举字符串
     * @param        枚举类型泛型
     * @return 枚举值
     */
    @Nullable
    public static > E getEnum(final Class enumClass, final String enumName) {
        return getEnum(enumClass, enumName, null);
    }

    /**
     * 获取枚举值
     *
     * @param enumClass   枚举类型
     * @param enumName    枚举字符串
     * @param defaultEnum 默认值
     * @param          枚举类型泛型
     * @return 枚举值
     */
    @Nullable
    public static > E getEnum(final Class enumClass, final String enumName,
                                                @Nullable final E defaultEnum) {
        Asserts.notNull(enumName);
        try {
            return Enum.valueOf(enumClass, enumName);
        } catch (final IllegalArgumentException ex) {
            return defaultEnum;
        }
    }

    /**
     * 获取枚举值 (忽略大小写)
     *
     * @param enumClass 枚举类型
     * @param enumName  枚举字符串
     * @param        枚举类型泛型
     * @return 枚举值
     */
    @Nullable
    public static > E getEnumIgnoreCase(final Class enumClass, final String enumName) {
        return getEnumIgnoreCase(enumClass, enumName, null);
    }

    /**
     * 获取枚举值 (忽略大小写)
     *
     * @param enumClass   枚举类型
     * @param enumName    枚举字符串
     * @param defaultEnum 默认值
     * @param          枚举类型泛型
     * @return 枚举值
     */
    @Nullable
    public static > E getEnumIgnoreCase(final Class enumClass, final String enumName,
                                                          @Nullable final E defaultEnum) {
        Asserts.notNull(enumClass);
        Asserts.notNull(enumName);

        for (final E each : enumClass.getEnumConstants()) {
            if (each.name().equalsIgnoreCase(enumName)) {
                return each;
            }
        }
        return defaultEnum;
    }

    /**
     * 获取所有的枚举值
     *
     * @param enumClass 枚举类型
     * @param        枚举类型泛型
     * @return 所有的枚举值
     */
    public static > List getEnumList(final Class enumClass) {
        return new ArrayList<>(Arrays.asList(enumClass.getEnumConstants()));
    }

    /**
     * 获取所有的枚举值
     *
     * @param enumClass 枚举类型
     * @param        枚举类型泛型
     * @return 所有的枚举值
     */
    public static > Map getEnumMap(final Class enumClass) {
        final Map map = new LinkedHashMap<>();
        for (final E e : enumClass.getEnumConstants()) {
            map.put(e.name(), e);
        }
        return map;
    }

    /**
     * 判断字符串是否为合法的枚举值
     *
     * @param enumClass 枚举类型
     * @param enumName  枚举字符串
     * @param        枚举类泛型
     * @return 合法时返回 {@code true} 否则返回 {@code false}
     */
    public static > boolean isValidEnum(final Class enumClass, final String enumName) {
        return getEnum(enumClass, enumName) != null;
    }

    /**
     * 判断字符串是否为合法的枚举值 (忽略大小写)
     *
     * @param enumClass 枚举类型
     * @param enumName  枚举字符串
     * @param        枚举类泛型
     * @return 合法时返回 {@code true} 否则返回 {@code false}
     */
    public static > boolean isValidEnumIgnoreCase(final Class enumClass, final String enumName) {
        return getEnumIgnoreCase(enumClass, enumName) != null;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy