一、基本概述
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的时候会有提示