Java中使用枚举来Switch

最近写需求的时候,遇到了这个问题,记录一下写法。

1、枚举类

package com.model.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;

import javax.validation.constraints.NotEmpty;

@Data
@ApiModel
public class SpecificColModelSelectReq {
    
    

    @ApiModelProperty(value = "建模ID", position = 1, required = true)
    @NotEmpty(message = "建模ID不能为空")
    private String modelId;

    @ApiModelProperty(value = "筛选类型(MAX-最大值;MIN-最小值;EARLIEST-最早;LATEST-最晚;FUZZY-模糊;EXACT-精确;REPORT_NUM-报告数)", position = 6, required = true)
    @NotEmpty(message = "筛选类型不能为空")
    private String chooseType;

    @Getter
    @AllArgsConstructor
    public enum ChooseType {
    
    
        MAX("MAX", "最大值"),
        MIN("MIN", "最小值"),
        EARLIEST("EARLIEST", "最早"),
        LATEST("LATEST", "最晚录"),
        FUZZY("FUZZY", "模糊匹配"),
        EXACT("EXACT", "精确匹配"),
        DEFAULT("DEFAULT", "条件为空"),
        REPORT_NUM("REPORT_NUM", "报告数");

        private String code;
        private String name;

        public static ChooseType getByCode(String code) {
    
    
            for (ChooseType chooseType : values()) {
    
    
                if (chooseType.getCode().equals(code)) {
    
    
                    //获取指定的枚举
                    return chooseType;
                }
            }
            return ChooseType.DEFAULT;
        }
    }

}

2、switch处理类

switch (SpecificColModelSelectReq.ChooseType.getByCode(req.getChooseType())) {
    
    
	case MAX:
		break;
	case MIN:
		break;
	case EARLIEST:
		break;
	case LATEST:
		break;
	case FUZZY:
		break;
	case EXACT:
		break;
	case REPORT_NUM:
		break;
	default:
}

猜你喜欢

转载自blog.csdn.net/zhangjian8641/article/details/108777392