枚举接口类BaseIntEnum
package com.bt.common.core.enums;
import java.util.*;
public interface BaseIntEnum {
String name();
int ordinal();
default int value() {
return this.ordinal();
}
default String text() {
return this.toString();
}
public static <T extends Enum<?>> T valueOf(Class<T> enumType, int value) {
T[] values = enumType.getEnumConstants();
T result = null;
if (BaseIntEnum.class.isAssignableFrom(enumType)) {
for (T e : values) {
if (((BaseIntEnum) e).value() == value) {
result = e;
break;
}
}
} else if (value >= 0 && value < values.length) {
result = values[value];
}
if (result == null) {
throw new IllegalArgumentException("Unknown enum constant " + enumType.getCanonicalName() + ": " + value);
}
return result;
}
public static <T extends Enum<?>> int value(T e) {
if (e instanceof BaseIntEnum) {
return ((BaseIntEnum) e).value();
} else {
return e.ordinal();
}
}
public static <T extends Enum<?>> Map<String, String> mapElements(Class<T> enumType) {
T[] values = enumType.getEnumConstants();
if (values == null) {
return Collections.emptyMap();
}
Map<String, String> map = new HashMap<>(values.length);
if (BaseIntEnum.class.isAssignableFrom(enumType)) {
for (T e : values) {
map.put(e.name(), ((BaseIntEnum) e).text());
}
} else {
for (T e : values) {
map.put(e.name(), e.toString());
}
}
return map;
}
public static <T extends Enum<?>> List<EnumItemDesc> listElements(Class<T> enumType) {
T[] values = enumType.getEnumConstants();
if (values == null) {
return Collections.emptyList();
}
List<EnumItemDesc> list = new ArrayList<>(values.length);
if (BaseIntEnum.class.isAssignableFrom(enumType)) {
for (T e : values) {
list.add(EnumItemDesc.of(e.name(), ((BaseIntEnum) e).text()));
}
} else {
for (T e : values) {
list.add(EnumItemDesc.of(e.name(), e.toString()));
}
}
return list;
}
static public class EnumItemDesc {
public static EnumItemDesc of(String name, String text) {
return new EnumItemDesc(name, text);
}
private String name;
private String text;
public EnumItemDesc(String name, String text) {
this.name = name;
this.text = text;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
}
枚举实现类SystemType
public enum SystemType implements BaseIntEnum {
PLATFORM(0, "平台"),
HOSPITAL(1, "医院"),
DEALER(2, "经销商"),
VENDOR(3, "厂商"),
;
private final int value;
private final String text;
private SystemType(int value, String text) {
this.value = value;
this.text = text;
}
@Override
public int value() {
return value;
}
@Override
public String text() {
return text;
}
}
根据枚举code获取枚举值的工具类
public class EnumUtil {
public static <T extends BaseIntEnum> T getByCode(Integer code, Class<T> enumClass) {
for (T each : enumClass.getEnumConstants()) {
if (code.equals(each.value())) {
return each;
}
}
return null;
}
}