代码如下: 如有需求请手动微调
@Getter
@AllArgsConstructor
public enum TaskSubTypeEnum {
/**
* TaskSubType
* Display_01 堆箱任务 、Display_02 货架任务、Display_03 冰柜任务、Display_05 销量任务
*/
UNKNOWN("Display_unknown", "未知任务", "00"),
STACK_TASK("Display_01", "堆箱任务", "01"),
SHELVES_TASK("Display_02", "货架任务", "02"),
FRIDGE_TASK("Display_03", "冰柜任务", "03"),
SALES_TASK("Display_05", "销量任务", "05");
private final String code;
private final String name;
private final String linkCode;
private static final List<String> displayTasks = Arrays.asList(
STACK_TASK.getCode(), SHELVES_TASK.getCode(), FRIDGE_TASK.getCode()
);
public static boolean isDisplayTask(String code) {
return displayTasks.contains(code);
}
public static TaskSubTypeEnum getByLinkCode(String linkCode) {
TaskSubTypeEnum[] enums = values();
for (TaskSubTypeEnum taskSubTypeEnum : enums) {
if (taskSubTypeEnum.getLinkCode().equals(linkCode)) {
return taskSubTypeEnum;
}
}
return UNKNOWN;
}
/**
* 根据code获取对应枚举
* @param code
* @return
*/
public static TaskSubTypeEnum getByCode(String code) {
TaskSubTypeEnum[] enums = values();
for (TaskSubTypeEnum taskSubTypeEnum : enums) {
if (taskSubTypeEnum.getCode().equals(code)) {
return taskSubTypeEnum;
}
}
return UNKNOWN;
}
/**枚举的equals与 '==' 一致
* 根据code或者linkCode 获取该枚举值name属性
* @param code
* @param linkCode
* @return
*/
public static String getNameByCodeOrLinkCode(String code, String linkCode) {
for (TaskSubTypeEnum subTypeEnum : TaskSubTypeEnum.values()) {
if (subTypeEnum.getCode().equals(code) || subTypeEnum.getLinkCode().equals(linkCode)) {
return subTypeEnum.getName();
}
}
return null;
}
}
update
判断枚举是否包含指定元素
@Getter
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
public enum RewardTypeEnum {
CASH_ONLINE(1, "枚举1", "01"),
CASH_OFFLINE(2, "枚举2", "02"),
COUPON_OFFLINE(3, "枚举2", "03"),
COUPON(4, "枚举4", "04"),
DEDUCTION(5, "枚举5", "05"),
;
final Integer code;
final String name;
final String bonusType;
public final static List<String> hasTransactionsBonusTypes = Arrays.asList(
COUPON.bonusType, DEDUCTION.bonusType
);
public final static List<String> noTransactionsBonusTypes = Arrays.asList(
CASH_ONLINE.bonusType, CASH_OFFLINE.bonusType, COUPON_OFFLINE.bonusType
);
public static boolean hasTransactions(String bonusType) {
return hasTransactionsBonusTypes.contains(bonusType);
}
}