枚举与常量类对比

业务场景

在实际的开发中,会存在这两个业务场景,

  1. 数据库中存储的是value,比如0,1,2;在界面显示时,又希望翻译成中文
  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("天青色"));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值