想用enum表示订单的状态:
/**
* 订单状态 enum
*/
public enum OrderStatus {
NONE_PAY("c010101","待付款"),
WAIT_SEND("c010102","待发货"),
CANCEL("c010110","已取消");
private final String code;
private final String explain;
OrderStatus(String code, String explain) {
this.code = code;
this.explain = explain;
}
public static OrderStatus conversion(String code){
}
public String getCode() {
return code;
}
public String getExplain() {
return explain;
}
}
现在有一个问题,前台传过来的参数对应的是enum中的code值(如待付款的订单,前台调用接口时,会传入"c010101"),我不知道怎么将这个字符串转换成对应的OrderStatus枚举对象。
想过使用switch判断:
/**
* 通过code返回对应的enum实例
* @param code
* @return
* @throws Exception
*/
public static OrderStatus fromCode(String code) throws Exception {
switch (code){
case "c010101" :return NONE_PAY;
case "c010102" :return WAIT_SEND;
case "c010110" :return CANCEL;
}
throw new Exception();
}
但总感觉需要维护多一个方法比较麻烦,请问有没有更好的实现方法