feat(core): BaseEnum 新增 getByValue、getByDescription、isValidValue 方法

This commit is contained in:
2025-01-06 20:56:16 +08:00
parent 80c0700934
commit 279d72b724
2 changed files with 48 additions and 22 deletions

View File

@@ -17,6 +17,7 @@
package top.continew.starter.core.enums;
import java.io.Serializable;
import java.util.Objects;
/**
* 枚举接口
@@ -49,4 +50,50 @@ public interface BaseEnum<T extends Serializable> {
default String getColor() {
return null;
}
/**
* 根据枚举值获取
*
* @param value 枚举值
* @param clazz 枚举类
* @return 枚举对象
* @since 2.8.1
*/
static <E extends Enum<E> & BaseEnum, T> E getByValue(T value, Class<E> clazz) {
for (E e : clazz.getEnumConstants()) {
if (Objects.equals(e.getValue(), value)) {
return e;
}
}
return null;
}
/**
* 根据枚举描述获取
*
* @param description 枚举描述
* @param clazz 枚举类
* @return 枚举对象
* @since 2.8.1
*/
static <E extends Enum<E> & BaseEnum> E getByDescription(String description, Class<?> clazz) {
for (Object e : clazz.getEnumConstants()) {
if (e instanceof BaseEnum<?> baseEnum && Objects.equals(baseEnum.getDescription(), description)) {
return (E)baseEnum;
}
}
return null;
}
/**
* 判断枚举值是否有效
*
* @param value 枚举值
* @param clazz 枚举类
* @return 是否有效
* @since 2.8.1
*/
static <E extends Enum<E> & BaseEnum, T> boolean isValidValue(T value, Class<E> clazz) {
return getByValue(value, clazz) != null;
}
}