日期:2021-12-09 1208 星期四
需求:一个枚举类中,放入2个不同的,前缀不样的枚举,需要把相应的枚举code-name,取出来,后面根据相应的code,取name
订单状态枚举
主订单的状态:ORDER_MAIN_STATUS【前缀】
子订单的状态:ORDER_SUB_STATUS【前缀】
package org.springblade.common.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
/**
* 订单状态枚举
* @Author
* @Date 2021/11/28
* @Version 1.0
*/
@Getter
@AllArgsConstructor
public enum OrderStatusEnum {
//主订单的状态
ORDER_MAIN_STATUS_PAID("待支付",0),
ORDER_MAIN_STATUS_HANDLE("订单处理中",1),
ORDER_MAIN_STATUS_CLOSED("订单关闭",2),
ORDER_MAIN_STATUS_COMPLETE("订单完成",3),
//子订单的状态
ORDER_SUB_STATUS_PAID("待支付",0),
ORDER_SUB_STATUS_PAID_OFF("待发货",1),
ORDER_SUB_STATUS_SHIPPED("已发货",2),
ORDER_SUB_STATUS_COMPLETE("已完成",3),
ORDER_SUB_STATUS_CANCELLED("已取消",4),
ORDER_SUB_STATUS_AFTER_SERVICE("已退款",5),
//未定义的状态,add,2021-12-09
ORDER_STATUS_UNDEFINED("",-1);
String name;
int value;
/*
* 获得的未定义的举值-Name
* @author
* @date 2021/12/9
* @return
*/
public static String getUndefinedName(){
return OrderStatusEnum.ORDER_STATUS_UNDEFINED.getName();
}
/*
* 获得的未定义的举值-code
* @author
* @date 2021/12/9
* @return
*/
public static int getUndefinedCode(){return OrderStatusEnum.ORDER_STATUS_UNDEFINED.getValue();}
/**
*获得相应-前缀一样的-所有的枚举值
* @author
* @date 2021/12/9
* @param mainOrSub 1=订单主状态-枚举,2=订单子状态-枚举,其它传入无效,只是一个空Map
* @return
*/
public static HashMap<Integer,String> getEnumData(int mainOrSub){
HashMap<Integer,String> map = new HashMap<Integer,String>();
if( mainOrSub != 1 && mainOrSub != 2){
return map;
}
for(OrderStatusEnum e : OrderStatusEnum.values()){
switch (mainOrSub) {
case 1:
if(e.name().startsWith("ORDER_MAIN_STATUS")) map.put(e.getValue(),e.getName());
break;
case 2:
if(e.name().startsWith("ORDER_SUB_STATUS")) map.put(e.getValue(),e.getName());
break;
}
}
return map;
}
}
class Test {
public static void main(String[] args) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//日期格式化
String date = df.format(new Date());
String msg = "[系统时间:" + date + "] ";
System.out.println(msg + "入口.main");
int size = 4;
for (int i = 0; i < size ; i++) {
int mainOrSub = i;
HashMap<Integer,String> map = OrderStatusEnum.getEnumData(mainOrSub);
System.out.println(msg + "for:"+ (i+1) + "/" + size + "," + i
+ ",[1-主状态,2-子状态,其它值-无数据]:"
+ "," + mainOrSub + ",数据:" + map.toString());
}
}
}
控制台-输出
[系统时间:2021-12-09 12:03:26] 入口.main
[系统时间:2021-12-09 12:03:26] for:1/4,0,[1-主状态,2-子状态,其它值-无数据]:,0,数据:{}
[系统时间:2021-12-09 12:03:26] for:2/4,1,[1-主状态,2-子状态,其它值-无数据]:,1,数据:{0=待支付, 1=订单处理中, 2=订单关闭, 3=订单完成}
[系统时间:2021-12-09 12:03:26] for:3/4,2,[1-主状态,2-子状态,其它值-无数据]:,2,数据:{0=待支付, 1=待发货, 2=已发货, 3=已完成, 4=已取消, 5=已退款}
[系统时间:2021-12-09 12:03:26] for:4/4,3,[1-主状态,2-子状态,其它值-无数据]:,3,数据:{}