业务场景
在实际的开发中,会存在这两个业务场景,
- 数据库中存储的是value,比如0,1,2;在界面显示时,又希望翻译成中文
- 前端界面得到了中文描述,想匹配对应的value存入数据库
常量类写法
类中嵌套类,将一组相关的常量放在一个类中;有些常量,仅仅通过英文名称来看会有歧义,这个时候就需要增加注释。通过对每个常量写两个对应的转换方法来实现。
public class Test {
public class Color{
// 白色
public static final int WHITE = 1;
// 黑色
public static final int BLACK = 2;
// 天青色
public static final int CELESTE = 3;
}
public static String changeValueToDes(int i){
switch(i) {
case Color.WHITE:
return "白色";
case Color.BLACK:
return "黑色";
case Color.CELESTE:
return "天青色";
default :
return "";
}
}
public static int changeDesToValue(String i){
switch(i) {
case "白色":
return Color.WHITE;
case "黑色" :
return Color.BLACK;
case "天青色" :
return Color.CELESTE;
default :
return 0;
}
}
public static void main(String[] args) {
System.out.println(changeValueToDes(1));
System.out.println(changeDesToValue("天青色"));
}
}
枚举类实现
枚举,自解释,不需要额外添加注释;
代码更加优雅,后期枚举值扩展时,方法无需改动
public enum ColorEnum {
WHITE(1, "白色"),
BLACK(2, "黑色"),
CELESTE(3, "天青色");
private int value;
private String des;
ColorEnum(int value, String des) {
this.value = value;
this.des = des;
}
public static String changeValueToDes(int i){
for(ColorEnum e : values()){
if(e.value == i){
return e.des;
}
}
return "";
}
public static int changeDesToValue(String i){
for(ColorEnum e : values()){
if(e.des.equals(i)){
return e.value;
}
}
return 0;
}
public static void main(String[] args) {
System.out.println(changeValueToDes(1));
System.out.println(changeDesToValue("天青色"));
}
}