【MapSheep】
[好记性不如烂笔头]

枚举的基本用法

时间:2020年10月22日09:57:40

  1. 老鸟建议
    • 不要使用枚举的高级特性,如果当你都用高级特性的时候,那就不如把这个类定义成为一个普通类。不要那么麻烦了。
    • 当你需要一组常量的时候,可以使用枚举类型。
    • 枚举是用来方便的,不是用来搞特殊的。
  2. 什么时候需要使用枚举
    • 需要定义一组常量的时候。
  3. 介绍
    • 继承自java.lang.Enum,枚举实质上还是
    • 默认都是 pubilc static final。

代码演示

public class TestEnum {
    public static void main(String[] args) {
        //直接输出:春天
        System.out.println(Season.SPRING);
        
        //测试跟 switch 语句结合起来
        Season autumn = Season.AUTUMN;
        switch (autumn){
            case SPRING:
                System.out.println("春天");
                break;
            case SUMMER:
                System.out.println("夏天");
                break;
            case AUTUMN:
                System.out.println("秋天");
                break;
            case WINTER:
                System.out.println("冬天");
                break;
            default:
                System.out.println("储存");
                return;
        }
    }
}

enum Season{
    SPRING,SUMMER,AUTUMN,WINTER
}

enum Week{
    星期一,星期二,星期三,星期四,星期五,星期六,星期日
}

Jar包中展示

//@Transactional(propagation = Propagation.REQUIRED) 枚举常量序数:0
public enum Propagation {
    REQUIRED(0),
    SUPPORTS(1),
    MANDATORY(2),
    REQUIRES_NEW(3),
    NOT_SUPPORTED(4),
    NEVER(5),
    NESTED(6);

    private final int value;

    private Propagation(int value) {
        this.value = value;
    }

    public int value() {
        return this.value;
    }
}

枚举中的 Code Msg Flag测试

public enum GbRespCode {
    R_OK(0, "请求成功"),
    R_1(-1, "系统繁忙,请稍后重试"),
    R_4001(4001, "签名错误"),
    R_4002(4002, "Token错误"),
    R_4003(4003, "Post参数不合法,缺少必需的示例:OperatorID,Sig,TimeStamp,Data,Seq五个参数"),
    R_4004(4004, "请求的业务参数不合法"),
    R_4005(4005, "未查询到该订单"),
    R_4006(4006, "查询充电站信息错误"),
    R_4007(4007, "设备状态变化推送失败"),
    R_4008(4008, "设备未授权"),
    R_4009(4009, "站点未授权"),
    R_4010(4010, "查询充电站状态错误"),
    R_4011(4011, "推送充电状态失败"),
    R_4012(4012, "推送充电订单信息失败"),
    R_4013(4013, "设备接口编码不符合规范"),
    R_4014(4014, "未查询到该桩"),
    R_4015(4015, "未查询到该场站"),
    R_4016(4016, "入参设备ID列表不能为空"),
    R_4017(4017, "外部订单号只能为27位字符串"),
    R_4018(4018, "开始时间应小于结束时间"),
    R_4019(4019, "时间相差不能超过一天"),
    R_500(500, "系统错误");

    private String msg;
    private int code;

    private GbRespCode(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public String getMsg() {
        return this.msg;
    }

    public int getCode() {
        return this.code;
    }
}
// 测试枚举
// TODO 输出:500:系统错误
System.out.println(GbRespCode.R_500.getCode() + ":" + GbRespCode.R_500.getMsg());

// 测试枚举
// TODO 输出:R_500
System.out.println(GbRespCode.R_500);

通过bizCode获取bizDesc值

  1. 枚举类
public enum DictionaryEnum {
    ADJUST_GAIN("ADJUST", "GAIN", "库存调整-报溢"),
    ADJUST_LOSS("ADJUST", "LOSS", "库存调整-报损");

    private String parentCode;
    private String bizCode;
    private String bizDesc;

    private DictionaryEnum(String parentCode, String bizCode, String bizDesc) {
        this.parentCode = parentCode;
        this.bizCode = bizCode;
        this.bizDesc = bizDesc;
    }

    public String getParentCode() {
        return this.parentCode;
    }

    public String getBizCode() {
        return this.bizCode;
    }

    public String getBizDesc() {
        return this.bizDesc;
    }

    public static DictionaryEnum enumOfBizCode(String bizCode) {
        DictionaryEnum[] var1 = values();
        int var2 = var1.length;

        for (int var3 = 0; var3 < var2; ++var3) {
            DictionaryEnum type = var1[var3];
            if (type.getBizCode().equals(bizCode)) {
                return type;
            }
        }
        throw new IllegalArgumentException("Cannot find enum with value " + bizCode);
    }
}
  1. 测试类
String GAIN = "GAIN";
String LOSS = "LOSS";

// 库存调整-报溢
System.out.println(DictionaryEnum.enumOfBizCode(GAIN).getBizDesc());
// 库存调整-报损
System.out.println(DictionaryEnum.enumOfBizCode(LOSS).getBizDesc());
posted on 2021-02-07 10:43  (Play)  阅读(87)  评论(0编辑  收藏  举报