Java创建枚举类并定义使用枚举项

news2024/12/31 6:02:51

前言

在项目开发中,常量和枚举都是我们经常使用的技巧。都是为了提高开发效率。常量我们一般都会创建一个常量类,里面放一些经常使用的变量,例如:

在这里插入图片描述

枚举的定义和使用相比于常量,也是有异曲同工之巧的,下面就简单演示下如何定义和使用枚举

创建枚举类

首先我们要创建一个枚举类,使用IDEA的话就是创建class,然后选择Enum

在这里插入图片描述

一般我们的枚举类都是以xxxEnum这样命令的,表示这是一个枚举类。一般我们有两种做法

第一:创建一个系统枚举类,里面存放系统里面全部的枚举类

第二:每一个枚举类都单独创建,不混在一个大类里面

我个人比较倾向第一种,所以我就以第一种为例,开始简单介绍。

开发中按照自己的需求或者团队的需求灵活选择统一方案即可

定义枚举项

以数据库为参考,可以看到我这里有三个字段都可以定义成枚举:

在这里插入图片描述

下面以sex为例:

一般来说,我们都会给枚举项两个基本的属性,用于表示状态和描述,然后就可以对根据需求,定义多个枚举项了。

枚举项和常量一样,最好都要使用大写+下划线的进行定义。多个枚举项之间使用逗号隔开,最好一个枚举项使用封号结尾:

在这里插入图片描述

如果不是这么定义,那语法都过不去的

在这里插入图片描述

因为我们不会给枚举项设置值,但是通常需要使用枚举项的值,所以只需要使用@Getter进行修饰即可。

在这里插入图片描述

这样一个简单的枚举项就定义好了,我们可以在这个大枚举类里面定义其他的枚举项:

注意,这些枚举项都是在class中定义的,每一个单独的枚举使用enum修饰

在这里插入图片描述

相关代码如下:

package com.wyh.common;

import lombok.Data;
import lombok.Getter;

/**
 * @Description: 系统枚举
 * @Author: 魏一鹤
 * @Date: 2023-02-01 20:14
 **/
@Data
public class Enums {
    /**
     * 性别 0:女 1:男
     **/
    public enum SexEnum {
        SEX_WOMAN("女", 0),
        SEX_MAN("男", 1);
        @Getter
        private String desc;
        @Getter
        private int code;

        SexEnum(String desc, int code) {
            this.desc = desc;
            this.code = code;
        }
    }


    /**
     * 是否删除 0:正常 1:删除
     **/
    public enum DeleteEnum {
        DELETE_NO("正常", 0),
        DELETE_IS("删除", 1);
        @Getter
        private String desc;
        @Getter
        private int code;

        DeleteEnum(String desc, int code) {
            this.desc = desc;
            this.code = code;
        }
    }

    /**
     * 账号状态 0:正常 1:删除
     **/
    public enum StatusEnum {
        ACCOUNT_NORMAL("正常", 0),
        ACCOUNT_DISABLE("禁用", 1);
        @Getter
        private String desc;
        @Getter
        private int code;

        StatusEnum(String desc, int code) {
            this.desc = desc;
            this.code = code;
        }
    }
}

使用枚举

以性别枚举为例,我们可以获取一下它的值,为了方便,我直接写了个main方法进行测试:

  System.out.println(SEX_WOMAN.getDesc());
  System.out.println(SEX_WOMAN.getCode());

在这里插入图片描述

总结

总的来说,枚举确实可以帮助我们优化代码,提高效率。这只是最简单的定义和使用,后面开发中如果遇到深化的使用场景,再回来补充

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/333789.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

梅开二度的 axios 源码阅读,三千字详细分享功能函数,帮助扩展开发思维

前言 第一遍看 axios 源码,更多的是带着日常开发的习惯,时不时产生出点联想。 第二遍再看 axios 源码,目标明确,就是奔着函数来的。 当有了明确清晰的目标,阅读速度上来了,思绪也转的飞快。 按图索骥&a…

day 15 第六章二叉树

层序遍历 102.二叉树的层序遍历107.二叉树的层次遍历II199.二叉树的右视图637.二叉树的层平均值429.N叉树的层序遍历515.在每个树行中找最大值116.填充每个节点的下一个右侧节点指针117.填充每个节点的下一个右侧节点指针II104.二叉树的最大深度111.二叉树的最小深度 226.翻转二…

速腾rshelios 5515惯导时间同步

目前接触过两种雷达和惯导同步的方式: 1.惯导输出gprms和pps信号给米文系统,雷达驱动从系统里读取时间。 2.惯导输出gprms和pps信号给雷达,雷达驱动从雷达数据读取时间。 GPRMS和PPS的内容参考:STM32模拟GPS输出PPS、GPRMC与VLP…

多传感器融合定位九-基于滤波的融合方法Ⅰ其一

多传感器融合定位九-基于滤波的融合方法Ⅰ其一1. 滤波器的作用2. 概率基础知识2.1 概率、概率密度2.2 联合概率密度2.3 条件概率密度2.4 贝叶斯公式2.5 贝叶斯推断2.6 高斯概率密度函数2.7 联合高斯概率密度函数2.8 高斯随机变量的线性分布1. 滤波器的作用 滤波器的本质&#…

编译与链接------《程序员的自我修养》

本篇整理于《程序员的自我修养》一书中编译与链接相关知识,整理的目的是为了更加深入的了解编译于链接的更多底层知识,面对程序运行时种种性能瓶颈我们束手无策。我们看到的是这些问题的现象,但是却很难看清本质,所有这些问题的本质就是软件运…

Allegro如何使用Vertext命令修改丝印线段的形状操作指导

Allegro如何使用Vertext命令修改丝印线段的形状操作指导 在用Allegro画丝印线段的时候,如果画了一段不是自己需要形状的线段,无需删除重画,可以用Vertext命令直接编辑 如下图 修改前 修改后 具体操作如下 选择Edit

Java笔记-JUC基础

1、什么是JUC JUC指的是java.util三个并发编程工具包 java.util.concurrentjava.util.concurrent.atomicjava.util.concurrent.locks 2、线程的几种状态 public enum State{NEW,//新建RUNNABLE,//准备就绪,等待资源BLOCKED,//阻塞WAITING,//一直等待TIMED_WAITI…

vue脚手架 element-ui spring boot 实现图片上传阿里云 并保存到数据库

一.阿里云 注册登陆就不讲了,登陆进去后如下操作 1. 进入对象存储OSS 创建一个新的Bucket 随后点击新建的bucket 2.去访问RAM 前往RAM控制台 3.去创建用户 4.创建密匙 5.随后返回RAM控制台 给用户增加权限,文件上传所需权限,需要带含有…

LeetCode——1797. 设计一个验证系统

一、题目 你需要设计一个包含验证码的验证系统。每一次验证中,用户会收到一个新的验证码,这个验证码在 currentTime 时刻之后 timeToLive 秒过期。如果验证码被更新了,那么它会在 currentTime (可能与之前的 currentTime 不同&am…

Java IO模型详解

文章目录Java IO模型详解一、I/O的定义1、计算机结构的视角2、应用程序的视角二、Java 中3种常见的 I/O 模型1、同步阻塞 I/O(BIO)2、同步非阻塞 I/O(NIO)★ I/O 多路复用模型3、异步非阻塞 I/O(AIO)Java I…

Flutter 小技巧之 3.7 更灵活的编译变量支持

今天我们聊个简单的知识点,在 Flutter 3.7 的 release-notes 里,有一个没有出现在 announcement 说明上的 change log ,可能对于 Flutter 团队来说这个功能并不是特别重要,但是对于我个人而言,这是一个十分重要的能力补…

什么是模板方法模式?

在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。例如,去…

阿里云国际服务器ECS特性与优势

阿里云国际服务器的 ECS 作为一种安全、可靠、灵活、可扩展的云计算服务,不仅可以减少运行和维护,而且可以提高运行和维护效率,使用户关注核心业务的创新。 阿里云国际服务器ECS优势一:产品丰富 阿里云国际云服务器 ECS 可以提供…

《MySql学习》 SQL 语句的更新过程

《MySql学习》 SQL 语句的更新过程 一.SQL查询语句的执行过程 上一篇博文记录了SQL查询语句的执行过程,首先客户端通过TCP三次握手与Server层的连接器建立连接(短连接与长链接),缓存权限。然后去查询缓存(8.0后移除&…

联想服务器双品牌的思考:融合化、场景化、订阅化、绿色化,打造全栈新算力基础设施

联想集团执行副总裁兼中国区总裁刘军:智能化转型是中国企业未来十年穿越经济周期的利器,智能化生产力水平决定了企业发展的速度与高度。 联想创新性提出融合化、场景化、订阅化及绿色化的“四维算力”,致力于成为中国领先的智能IT基础设施提供…

微服务--Feign学习

Feign远程调用: RestTemplate发起远程调用的代码: 存在下面的问题 代码可读性差,编程体验不统一参数复杂URL难以维护 Feign的介绍:Feign是一个声明式的http客户端,官方地址:https://github.com/OpenFeign/…

论文文献引用规范和标准(国标GBT7714)@endnote国标样式

文章目录论文文献引用规范和标准(国标GBT7714)国标GBT7714-2015endnote stylerefs简述国标GBT7714条目的组织格式Noteword中的文献交叉引用超链接文献引用示例endNote资源和基本使用endnote或其他文献引用工具下载word中的其他引文技巧知网国标格式引文引…

谈谈Java Optional的坑

开端: 大家好,我是老白。昨天朋友提出的java8后出来的自带的对象判定方式Optional.ofNullable(),后来查询了一些资料和自己试验了一些demo资料,在这里记录分享个大家 作用:判断对象是否为空,是则重新创建一个新对象&…

ABAP 搜索帮助带出多个字段描述 更新屏幕字段

文章目录需求解析1-DYNP_GET_STEPL2-F4IF_INT_TABLE_VALUE_REQUEST3-获取返回值4-把相应字段更新到内表5-DYNP_VALUES_UPDATE代码需求 如图,当我点击责任工序的搜说帮助时, 同时会把责任人员的描述带出来. 解析 1-DYNP_GET_STEPL 这个方法就是获取当前的循环步骤 2-F4IF_I…

浏览器中的 JavaScript 执行机制

思维导图 本文为反复学习极客时间-《浏览器的工作原理与实践》-浏览器中的 JavaScript 执行机制章节中的一些思考与记录。 一些重要概念 变量提升 所谓的变量提升,是指在 JavaScript 代码执行过程中,JavaScript 引擎把变量的声明部分和函数的声明部分…