一、业务场景

  项目开发中经常会遇到多条件判断的情况,如果判断条件少的话使用if/elseif/else还比较好处理,如果判断条件多的话,则在使用这种语句就不太合适。

如果是自定义的一些内容,比如不同的状态等等,就可以考虑使用枚举值。枚举值一般都有固定的值,不会随意改变,使用起来很方便。

二、需求分析

   以前在开发中,switch语句中大多都是使用string字符串作为比对条件,没有见到在switch语句和枚举值同时使用的情况,直到开发这个新项目,才学

会了这种新的用法。这种方式感觉很实用,在项目开发中,有需要时可以经常性的使用,写出来的代码也会更加容易理解。

三、解决方案

   首先就是创建一个枚举类,这个枚举类会使用到谷歌开发的一个java集合类的工具包,maven坐标如下:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>30.0-jre</version>
</dependency>

简单定一个性别枚举类如下:
import com.google.common.collect.Maps;

import java.util.Arrays;
import java.util.Map;

/**
 * @Description: 性别枚举
 * @ClassName: GenderMenu
 * @author: dengchao
 * @date: 2022/8/23 9:46
 */
public enum GenderEnum {
    GENDER_MAN("MAN", "男性"),
    GENDER_WOMEN("GENDER_WOMEN", "女性"),
    GENDER_OTHER("OTHER", "其他")
    ;

    /*
     * 描述信息
     */
    private String message;

    /*
     * 代码
     */
    private String code;

    public String code() {
        return this.code;
    };

    public String message() {
        return this.code;
    };

    /*
     * 枚举类的定义方式
     */
    GenderEnum(String code, String message){
        this.code = code;
        this.message = message;
    }

    public static GenderEnum getEnumValue(String value) {
        return MAPS.get(value);
    }

    private static final Map<String, GenderEnum> MAPS =
            Maps.uniqueIndex(Arrays.asList(GenderEnum.values()), GenderEnum::code);
}

测试代码如下:
/**
 * @Author 一只爱阅读的程序员
 * @Description 测试类
 * @Date 2022/8/23 10:05
 * @Version 1.0
 */
public class EnumTest {
    public static void main(String[] args) {
        // 性别参数
        String genderParam = GenderEnum.GENDER_WOMEN.code();
        GenderEnum genderEnum = GenderEnum.getEnumValue(genderParam);
if (genderEnum == null) {
            throw new RuntimeException("枚举值错误!");
        }

        switch (genderEnum) {
            case GENDER_MAN:
                System.out.println("男性类别做一些事情");
                // TODO
                break;
            case GENDER_WOMEN:
                System.out.println("女性类别做一些事情");
                // TODO
                break;
            case GENDER_OTHER:
                System.out.println("其他类别做一些事情");
                // TODO
                break;
            default:
                break;
        }
    }
}

测试结果如下

java 枚举类 java 枚举类 switch_System

 

使用这种方式很好的将枚举类和switch语句结合起来使用,在开发中非常地实用,以后的开发中都可以使用起来。有其他好的建议的朋友,欢迎留言讨论。