一、基本概述

1.1 概念

  • 在Java中,被 enum 关键字修饰的类型就是枚举类型。

  • 如果枚举不添加任何方法,枚举值默认为从0开始的有序数值

  • 枚举的好处:可以将常量组织起来,统一进行管理

  • 枚举的典型应用场景:错误码、状态机、字典等

二、例子

单参数

2.1.1 建立枚举类

enums/CardTypeEnum

@Getter
public enum CardTypeEnum {
    上班卡("01"),
    下班卡("02");

    private String code;

    //构造方法
    CardTypeEnum(String code) {
        this.code = code;
    }

    /**
     * @Description 从code获取枚举实例的方法
     * @author zhengkangpan
     * @date 2024/5/9 16:54
     **/
    public static CardTypeEnum getByCode(String code) {
        for (CardTypeEnum cardType : CardTypeEnum.values()) {
            if (cardType.getCode().equals(code)) {
                return cardType;
            }
        }
    }
}

2.1.2 使用

System.out.println(CardTypeEnum.上班卡.getCode());
System.out.println(CardTypeEnum.上班卡);
System.out.println(CardTypeEnum.上班卡.name());
System.out.println("---------------------------------");
//values()方法为获取到所有的枚举,结果为CardTypeEnum[]数组
for (CardTypeEnum a:CardTypeEnum.values()){
    System.out.println(a);
}

结果为:

01
上班卡
上班卡
---------------------------------
上班卡
下班卡

场景:如果后端从数据库获取了一个01的数据,想要转成对应的中文名称

步骤为:先调用getByCode方法(遍历枚举类获取到对应的枚举),再通过name()方法获取到对应的名称

双参数

2.2.1 建立枚举类

enums/SexEnum

@Getter
@AllArgsConstructor
public enum ApplicationStatusEnum {

    //0待提交,1待财务审批,2财务退回,3财务拒绝,4待领导审批(财务审批通过),5领导退回,6领导拒绝,7通过
    TO_BE_SUBMITTED("0","待提交"),
    FINANCE_PENDING_APPROVAL("1","待财务审批"),
    FINANCE_SEND_BACK("2","财务退回"),
    FINANCE_REJECT("3","财务拒绝"),
    LEADER_PENDING_APPROVAL("4","待领导审批(财务审批通过)"),
    LEADER_SEND_BACK("5","领导退回"),
    LEADER_REJECT("6","领导拒绝"),
    PASS("7","通过");

    private String  code;

    private String description;

    public static String getMsgByCode(String  code) {
        for (ApplicationStatusEnum obj : ApplicationStatusEnum.values()) {
            if (code.equals(obj.getCode())) {
                return obj.getDescription();
            }
        }
        return "";
    }
    
}

2.2.2 使用

System.out.println(ApplicationStatusEnum.TO_BE_SUBMITTED.getCode());
System.out.println(ApplicationStatusEnum.TO_BE_SUBMITTED.getDescription());

结果为

0
待提交

双参数对比单参数的好处就是,用idea的时候会有提示