需要给一个系统返回枚举类型(不可变)。
该枚举类型有三个枚举常量:PENDING("PENDING", "待确认"),
SUCCESS("SUCCESS", "确认成功"),
CANCELED("CANCELED", "取消");
但只能返回三个常量的其中一个状态,可是另外两个也有值怎么办呀?(直接返回的话对方系统会得到三个状态)
常量创建时有一个构造函数给常量赋过key,value属性值了导致所有常量的key,value属性都有值:
属性:
private String key;
private String value;
构造函数:
private OrderStatus(String key, String value) {
this.key = key;
this.value = value;
}
不是很明白问题,直接返回满足条件的枚举常量比如Enum.PENDING,然后系统根据返回的枚举值处理就可以
个人觉得自觉返回枚举值处理
不懂为什么要全部返回?不能返回单个值?个么难道你还想先取整个Enum?又要让接收方只收取一个?个么难道要先清另外两个?那还不如直接返回Enum.PENDING
是不是想要的是Enum.values()
/**
* 状态枚举
*/
public enum Statu {
/**
* 待确认
*/
PENDING,
/**
* 确认成功
*/
SUCCESS,
/**
* 取消
*/
CANCELED;
private static Map<String, Statu> map = new HashMap<>();
static {
map.put("待确认", PENDING);
map.put("确认成功", SUCCESS);
map.put("取消", CANCELED);
}
public static Statu forValue(String value) {
return map.get(value);
}
@JsonValue
public String toValue() {
for (Map.Entry<String,Statu> entry : map.entrySet()) {
if (entry.getValue() == this) {
return entry.getKey();
}
}
return "";
}
}
你这样回去到status的值肯定只有一个
枚举类型不是用于返回Enum.PENDING等等枚举值的吗,为什么要返回枚举类型的这个类