feat(IBaseEnum.java): 添加根据值获取标签方法

This commit is contained in:
郝先瑞 2022-04-11 00:11:00 +08:00
parent de8dc09cdf
commit 6a1545e6f0

View File

@ -19,10 +19,11 @@ public interface IBaseEnum<T> {
String getLabel();
/**
* 根据值获取枚举
*
* @param value
* @param clazz
* @param <E> 枚举
* @param <E> 枚举
* @return
*/
static <E extends Enum<E> & IBaseEnum> E getEnumByValue(Object value, Class<E> clazz) {
@ -35,6 +36,14 @@ public interface IBaseEnum<T> {
return matchEnum;
}
/**
* 根据值获取标签
*
* @param value
* @param clazz
* @param <E>
* @return
*/
static <E extends Enum<E> & IBaseEnum> String getLabelByValue(Object value, Class<E> clazz) {
Objects.requireNonNull(value);
EnumSet<E> allEnums = EnumSet.allOf(clazz); // 获取类型下的所有枚举
@ -51,4 +60,29 @@ public interface IBaseEnum<T> {
}
/**
* 根据值获取标签
*
* @param label
* @param clazz
* @param <E>
* @return
*/
static <E extends Enum<E> & IBaseEnum> Object getValueByLabel(String label, Class<E> clazz) {
Objects.requireNonNull(label);
EnumSet<E> allEnums = EnumSet.allOf(clazz); // 获取类型下的所有枚举
String finalLabel = label;
E matchEnum = allEnums.stream()
.filter(e -> ObjectUtil.equal(e.getLabel(), finalLabel))
.findFirst()
.orElse(null);
Object value = null;
if (matchEnum != null) {
value = matchEnum.getValue();
}
return value;
}
}