一、使用枚举来表述常量数据字典
package com.ypf.enums;
public enum ProductStateEnum {
OFFLINE(-1, "非法商品"), SUCCESS(0, "操作成功"),
PASS(2, "通过认证"), INNER_ERROR(-1001, "操作失败"),
EMPTY(-1002, "商品为空");
private int state;
private String stateInfo;
private ProductStateEnum(int state, String stateInfo) {
this.state = state;
this.stateInfo = stateInfo;
}
public static ProductStateEnum stateOf(int index) {
for (ProductStateEnum state : values()) {
if (state.getState() == index) {
return state;
}
}
return null;
}
public int getState() {
return state;
}
public String getStateInfo() {
return stateInfo;
}
}
二、内外部系统枚举转换
2.1 外部系统
public enum MpFundType {
/**
* 不支持
*/
FUND_TYPE_UNSUPPPORTED,
/**
* 现金账户
*/
FUND_TYPE_CASH,
/**
* 赠送账户
*/
FUND_TYPE_GIFT
}
2.2 内部系统
public enum FundType implements IEnum<Integer> {
/**
* 现金账户
*/
FUND_TYPE_CASH(1, "现金账户"),
/**
* 赠送账户
*/
FUND_TYPE_GIFT(2, "赠送账户");
private int code;
private String desc;
FundType(int code, String desc) {
this.code = code;
this.desc = desc;
}
public static Optional<FundType> nameOf(String name) {
return Stream.of(values()).filter(s -> s.name().equals(name)).findFirst();
}
public int getCode() {
return code;
}
public String getDesc() {
return desc;
}
@Override
public Integer getValue() {
return code;
}
@Override
public String getTitle() {
return desc;
}
}
2.3 使用姿势
FundType fundType = FundType.nameOf(mpFundVo.getFundType().name()).orElse(null);
欢迎关注博主公众号。在这里你可以收获一个java后端学习的环境,一个问答的学习环境。