一、业务场景

  项目开发中经常会遇到多条件判断的情况,如果判断条件少的话使用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;
}
}
}

测试结果如下

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

Java中枚举配合switch语句用法-2022新项目的更多相关文章

  1. Java中枚举的写法和用法

            在公司代码中,用了一大堆的枚举,看得我好懵逼.下面开始看看枚举怎么写和怎么用. 一.枚举的写法         关于枚举的写法,网上好多这方面的知识.这里直接贴一个我自己写的枚举类的代 ...

  2. java中枚举类的使用详解

    /* * 通过JDK5提供的枚举来做枚举类 */ public enum Direction2 { FRONT("前"), BEHIND("后"), LEFT( ...

  3. 永久性for循环配合switch语句可以实现菜单功能

    永久性for循环配合switch语句可以实现菜单功能总结:加入想要无条件地跳转到某条语句执行,用goto语句: 加入想要对某种条件进行判断,为真或为假分别执行不同的语句,用if语句 加入想要检测的条件 ...

  4. Java-Runoob-高级教程-实例-方法:11. Java 实例 – enum 和 switch 语句使用

    ylbtech-Java-Runoob-高级教程-实例-方法:11. Java 实例 – enum 和 switch 语句使用 1.返回顶部 1. Java 实例 - enum 和 switch 语句 ...

  5. Java中try,catch,finally的用法

    Java中try,catch,finally的用法,以前感觉还算熟悉,但看到一篇博文才有更深点的理解,总结网友博客如下. Java异常处理的组合方式: 1.try+catch  运行流程:运行到try ...

  6. 【转】Java中try catch finally语句中含有return语句的执行情况(总结版)

    Java中try catch finally语句中含有return语句的执行情况(总结版) 有一点可以肯定,finally块中的内容会先于try中的return语句执行,如果finall语句块中也有r ...

  7. JAVA中字符串函数subString的用法小结

    本篇文章主要是对JAVA中字符串函数subString的用法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 String str; str=str.substring(int begi ...

  8. 【Java学习笔记之二十九】Java中的"equals"和"=="的用法及区别

    Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: String str1 = new String(" ...

  9. java中 this 的三种用法

    Java中this的三种用法 调用属性 (1)this可以调用本类中的任何成员变量 调用方法(可省略) (2)this调用本类中的成员方法(在main方法里面没有办法通过this调用) 调用构造方法 ...

  10. Java中枚举的使用

    Java中枚举其实就是静态常量,今天发现枚举里面其实还能加方法,学习了下, 代码如下: package org.pine.test; import java.util.HashMap; import ...

随机推荐

  1. Walrus 0.5发布:重构交互流程,打造开箱即用的部署体验

    开源应用管理平台 Walrus 0.5 已于近日正式发布! Walrus 0.4 引入了全新应用模型,极大程度减少了重复的配置工作,并为研发团队屏蔽了云原生及基础设施的复杂度.Walrus 0.5 在 ...

  2. trick1---实现tensorflow和pytorch迁移环境教学

    相关文章: [一]tensorflow安装.常用python镜像源.tensorflow 深度学习强化学习教学 [二]tensorflow调试报错.tensorflow 深度学习强化学习教学 [三]t ...

  3. css 修改复选框的样式

    效果图: 实现代码如下: /* 选中input标签类型为复选框的 */ input[type="checkbox"] { width: 16px; height: 16px; ve ...

  4. Python - 将RTF文件转为Word 、PDF、HTML格式

    RTF也称富文本格式,是一种具有良好兼容性的文档格式,可以在不同的操作系统和应用程序之间进行交换和共享.有时出于不同项目的需求,我们可能需要将RTF文件转为其他格式.本文将介如何通过简单的Python ...

  5. 【Flink入门修炼】1-1 为什么要学习 Flink?

    流处理和批处理是什么? 什么是 Flink?为什么要学习 Flink? Flink 有什么特点,能做什么? 本文将为你解答以上问题. 一.批处理和流处理 早些年,大数据处理还主要为批处理,一般按天或小 ...

  6. Linux centos7.6 在线及离线安装postgresql12 详细教程(rpm包安装)

    一.在线安装 官网找到对应的版本 PostgreSQL:  https://www.postgresql.org/ 1.配置yum源 sudo yum install -y https://downl ...

  7. DP的各种优化小结

    动态规划算法(简称动规,DP),是IO中最为常见的,也是最为重要的算法之一.这也就意味着,在各种题目与比赛中它会有很多稀奇古怪的算法和优化,时不时地在你的面前出现一个TLE,MLE和RE来搞你的心态. ...

  8. Linux 中hdparm命令使用说明——带实例

    详解Linux中hdparm命令查看硬盘信息的用法 功能说明:显示与设定硬盘的参数. 语 法:hdparm [-CfghiIqtTvyYZ][-a ][-A <0或1>][-c ][-d ...

  9. java.lang.System快速指南

    1.介绍 在本教程中,我们将快速了解java.lang.System类及其特性和核心功能. 2.IO 系统类是java.lang的一部分,它的一个主要特性是让我们能够访问标准的I/O流. 简单地说,它 ...

  10. win32 - 将控制台输出重定向到txt文本上

    这里需要两个app. parent.cpp #include <Windows.h> #include <stdio.h> int main() { SECURITY_ATTR ...