JAVA 枚舉類遍歷與switch使用


1、定義枚舉類


import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import com.zxtech.framework.exception.UnknownEnumException;
import com.zxtech.framework.model.enums.IEnum;
import com.zxtech.framework.util.StringUtils;

/**
* <p>
* 流程節點名稱枚舉
* </p>
*
* @author Caratacus
*/
public enum InstanceNodeEnum implements IEnum {

JobsiteRequirementFeedbackMainProcess(0, "工地需求反饋主流程啟動"),
JobsiteRequirementTurnback(1, "工地需求修改"),
FSDPICEngineerPretreatment(2,"FSD/PIC工程師預處理"),
InstallationOrServiceManagerApproval(3,"安裝/維保經理審批"),
NonStandardDesign(4,"非標設計"),
PackageDesign(5,"包裝設計"),
FSDPICManagerVerification(6,"FSD/PIC經理審核"),
ExportMaterialListforJDESARelease(7,"導出物料清單用於JDE/SA釋放"),
PlanOrderConfirmationAMUIPO(8,"計划訂單確認(AM/UI PO)"),
SupplierMaterialShippment(9,"供應商物料發運"),
MaterialConfirmation(10,"物料確認"),
OverseasMaterialQuotation(11,"海外物料報價"),
MaterialShippment(12,"物料發運");
@EnumValue
private final int value;

private final String desc;

InstanceNodeEnum(int value, String desc) {
this.value = value;
this.desc = desc;
}

@Override
public int getValue() {
return value;
}

public String getDesc() {
return desc;
}

/**
* 通過value取枚舉
* * @param value
* * @return
*/
public static InstanceNodeEnum getTypeByValue(String value) {
if (StringUtils.isEmpty(value)) {
return null;
}

int valueKey = Integer.parseInt(value);
for (InstanceNodeEnum enums : InstanceNodeEnum.values()) {
if (enums.getValue() == valueKey) {
return enums;
}
}
return null;
}

/**
* 通過value取描述
* * @param value
* * @return
*/
public static String getDescByValue(int value) {
for (InstanceNodeEnum enums : InstanceNodeEnum.values()) {
if (enums.getValue() == value) {
return enums.getDesc();
}
}
return"";
}
}

2、枚舉類遍歷

for (InstanceNodeEnum nodeTypeEnum : InstanceNodeEnum.values()) {
nodeTypeEnum.getValue();
nodeTypeEnum.getDesc();
List<AMTTrackingTbFeedbackinfoDTO> curNodeList=amtTrackingInfoList.stream().filter(s-> (StringUtils.isNotEmpty(s.getInstanceNodeName())&&s.getInstanceNodeName().equals(nodeTypeEnum.getDesc()))).collect(Collectors.toList());
calcNodeAMTTrackingInfo(String.valueOf(nodeTypeEnum.getValue()),curNodeList,resultList);
}

3、枚舉類結合switch使用

private void calcNodeAMTTrackingInfo(String nodeIndex,List<AMTTrackingTbFeedbackinfoDTO> curNodeList,List<JSONObject> resultList) {
String nowDate=DateUtils.getNowDate();
InstanceNodeEnum instanceNodeEnum = InstanceNodeEnum.getTypeByValue(nodeIndex);
switch (instanceNodeEnum) {
case JobsiteRequirementFeedbackMainProcess:
        doSomething();
     break;
case JobsiteRequirementTurnback:
       doSomething();
     break;
     default:
     break;


        







免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM