如何优雅处理枚举值,分别介绍后端处理与前端处理,这样做的好处是新增枚举值不影响原来业务
说明:以性别(gender)为例,假设数据库存储为数字,其中0代表未知,1代表男,2代表女
后端处理
public enum GenderEnum {
UNKNOWN("未知", 0),
MAN("男", 1),
WOMAN("女",2 );
private final String text;
private final int value;
GenderEnum(String text, int value) {
this.text = text;
this.value = value;
}
/**
* 根据 value 获取枚举
*
* @param value
* @return
*/
public static GenderEnum getEnumByValue(int value) {
for (GenderEnum anEnum : GenderEnum.values()) {
if (anEnum.value==value) {
return anEnum;
}
}
return null;
}
public int getValue() {
return value;
}
public String getText() {
return text;
}
}
测试
public void enumTest(){
System.out.println(GenderEnum.getEnumByValue(1).getText()); //输出男
System.out.println(GenderEnum.getEnumByValue(2).getText()); //输出女
}
前端处理
export const genderEnum = [
{ value: 0, text: '未知' },
{ value: 1, text: '男' },
{ value: 2, text: '女' },
]
export const getByValue = (value) => {
return genderEnum.find((item) => item.value === value)
}
export const getByText = (text) => {
return genderEnum.find((item) => item.text === text)
}
测试
console.log(getByValue(1).text) //男
console.log(getByValue(2).text) //女