Java中枚举配合switch语句用法-2022新项目
一、业务场景
项目开发中经常会遇到多条件判断的情况,如果判断条件少的话使用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新项目的更多相关文章
- Java中枚举的写法和用法
在公司代码中,用了一大堆的枚举,看得我好懵逼.下面开始看看枚举怎么写和怎么用. 一.枚举的写法 关于枚举的写法,网上好多这方面的知识.这里直接贴一个我自己写的枚举类的代 ...
- java中枚举类的使用详解
/* * 通过JDK5提供的枚举来做枚举类 */ public enum Direction2 { FRONT("前"), BEHIND("后"), LEFT( ...
- 永久性for循环配合switch语句可以实现菜单功能
永久性for循环配合switch语句可以实现菜单功能总结:加入想要无条件地跳转到某条语句执行,用goto语句: 加入想要对某种条件进行判断,为真或为假分别执行不同的语句,用if语句 加入想要检测的条件 ...
- Java-Runoob-高级教程-实例-方法:11. Java 实例 – enum 和 switch 语句使用
ylbtech-Java-Runoob-高级教程-实例-方法:11. Java 实例 – enum 和 switch 语句使用 1.返回顶部 1. Java 实例 - enum 和 switch 语句 ...
- Java中try,catch,finally的用法
Java中try,catch,finally的用法,以前感觉还算熟悉,但看到一篇博文才有更深点的理解,总结网友博客如下. Java异常处理的组合方式: 1.try+catch 运行流程:运行到try ...
- 【转】Java中try catch finally语句中含有return语句的执行情况(总结版)
Java中try catch finally语句中含有return语句的执行情况(总结版) 有一点可以肯定,finally块中的内容会先于try中的return语句执行,如果finall语句块中也有r ...
- JAVA中字符串函数subString的用法小结
本篇文章主要是对JAVA中字符串函数subString的用法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 String str; str=str.substring(int begi ...
- 【Java学习笔记之二十九】Java中的"equals"和"=="的用法及区别
Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: String str1 = new String(" ...
- java中 this 的三种用法
Java中this的三种用法 调用属性 (1)this可以调用本类中的任何成员变量 调用方法(可省略) (2)this调用本类中的成员方法(在main方法里面没有办法通过this调用) 调用构造方法 ...
- Java中枚举的使用
Java中枚举其实就是静态常量,今天发现枚举里面其实还能加方法,学习了下, 代码如下: package org.pine.test; import java.util.HashMap; import ...
随机推荐
- SqlSugar跨库查询/多库查询
一.跨库方式1:跨库导航 (5.1.3.24) 优点1:支持跨服务器,支持跨数据库品种, 支持任何类型数据库 优点2: 超级强大的性能,能达到本库联表性能 缺点:不支持子表过滤主表 (方案有ToL ...
- NLP领域任务如何选择合适预训练模型以及选择合适的方案【规范建议】【ERNIE模型首选】
1.常见NLP任务 信息抽取:从给定文本中抽取重要的信息,比如时间.地点.人物.事件.原因.结果.数字.日期.货币.专有名词等等.通俗说来,就是要了解谁在什么时候.什么原因.对谁.做了什么事.有什么结 ...
- 知识蒸馏相关技术【模型蒸馏、数据蒸馏】以ERNIE-Tiny为例
1.任务简介 基于ERNIE预训练模型效果上达到业界领先,但是由于模型比较大,预测性能可能无法满足上线需求. 直接使用ERNIE-Tiny系列轻量模型fine-tune,效果可能不够理想.如果采用数据 ...
- Midjourney|文心一格prompt教程[技巧篇]:生成多样性、增加艺术风格、图片二次修改、渐进优化、权重、灯光设置等17个技巧等你来学
Midjourney|文心一格prompt教程[技巧篇]:生成多样性.增加艺术风格.图片二次修改.渐进优化.权重.灯光设置等17个技巧等你来学 1.技巧一:临摹 我认为学习图片类的 prompt,跟学 ...
- git 上传错误This oplation equires one of the flowi vrsionsot the NET Framework:.NETFramework
相关文章链接: 码云(gitee)配置SSH密钥 码云gitee创建仓库并用git上传文件 git 上传错误This oplation equires one of the flowi vrsions ...
- 驱动开发:运用VAD隐藏R3内存思路
在进程的_EPROCESS中有一个_RTL_AVL_TREE类型的VadRoot成员,它是一个存放进程内存块的二叉树结构,如果我们找到了这个二叉树中我们想要隐藏的内存,直接将这个内存在二叉树中抹去,其 ...
- Socket.D 协议的开发缘由
为什么搞个新协议? 2021年时,想为 Solon 生态 提供一种 MVC 体验的 Socket 和 WebSocket 开发方式.这个想法,要求消息"能路由"."有元信 ...
- RHEL7安装11204 RAC的注意事项
最近在某客户的RHEL7 + 11204 RAC环境上测试遇到不少的坑,好在都赶在正式上线前及时发现并处理完毕. 其中两个问题比较典型所以特别记录下:问题都和主机重启后,O相关服务没有自启动导致,看来 ...
- Linux centos7.6 在线及离线安装postgresql12 详细教程(rpm包安装)
一.在线安装 官网找到对应的版本 PostgreSQL: https://www.postgresql.org/ 1.配置yum源 sudo yum install -y https://downl ...
- 【leetcode】合并 k 个有序链表,我给了面试官这 5 种解法
开胃菜 在进入本节的正题之前,我们先来看一道开胃菜. 题目 21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1 ...