
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