Java — 枚举

枚举是 JDK5 中引入的特性,由 enum 关键字来定义一个枚举类。

格式:

enum 枚举类名 {
    枚举项1,
    枚举项2,
    ...;

    成员变量;
    构造方法
    成员方法
}

说明:

一些程序在运行时需要的数据不能是随意的,必须是一定范围内的值。也就是统一管理一些常量。
JDK5 之前采用自定义类来解决,JDK5 之后可以直接采用枚举解决。

示例:

// JDK5之前自定义性别枚举
public class CustomSexEnum {

    public static final CustomSexEnum man = new CustomSexEnum(1, "男");
    public static final CustomSexEnum woman = new CustomSexEnum(2, "女");

    private Integer code;
    private String desc;

    private CustomSexEnum() {
    }

    private CustomSexEnum(Integer code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public Integer getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }
}
// JDK5之后定义性别枚举
public enum SexEnum {

    man(1, "男"),
    woman(2, "女");

    private Integer code;
    private String desc;

    private SexEnum() {
    }

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

    public Integer getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }
}

测试:

public class Test_01 {
    public static void main(String[] args) {
        // 获取男性对应代码及名称
        Integer manCode = CustomSexEnum.man.getCode();
        String manDesc = CustomSexEnum.man.getDesc();
        System.out.println("manCode = " + manCode);
        System.out.println("manDesc = " + manDesc);

        // 获取女性对应的代码及名称
        Integer womanCode = SexEnum.woman.getCode();
        String womanDesc = SexEnum.woman.getDesc();
        System.out.println("womanCode = " + womanCode);
        System.out.println("womanDesc = " + womanDesc);

        // 枚举就是一个对象
        SexEnum man = SexEnum.man;
        System.out.println(man == SexEnum.man);
    }
}

运行:

manCode = 1
manDesc = 男
womanCode = 2
womanDesc = 女
true

示例:

// 系统代码接口
public interface SystemCode {
    // 获取代码
    Integer getCode();

    // 获取代码描述
    String getDesc();
}
// 系统代码接口实现类
public enum SystemCodeEnum implements SystemCode {

    ERROR(-1, "系统异常"),
    FAIL(0, "操作失败"),
    SUCCESS(1, "操作成功");

    private Integer code;
    private String desc;

    SystemCodeEnum() {
    }

    SystemCodeEnum(Integer code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    @Override
    public Integer getCode() {
        return this.code;
    }

    @Override
    public String getDesc() {
        return this.desc;
    }
}

测试:

public class Test_02 {
    public static void main(String[] args) {
        SystemCode systemCode = SystemCodeEnum.SUCCESS;
        System.out.println("code = " + systemCode.getCode());
        System.out.println("desc = " + systemCode.getDesc());
    }
}

运行:

code = 1
desc = 操作成功

Original: https://www.cnblogs.com/bybeiya/p/16251816.html
Author: 北涯
Title: Java — 枚举

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/585899/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 《卡死你3000》批量修改被控机密码,秘钥

    批量生成密码之产生随机数: 默认产生16位大小写加数字密码 批量生成密码,并写入nodelist.csv: cs产生所有被控机旧密码并写入nodelist.ps1 运行这个脚本后,…

    Linux 2023年6月13日
    079
  • 分布式中灰度方案实践

    让请求在导航的服务节上点执行; 一、背景简介 分布式系统中会存在这样的开发场景,不同需求可能涉及到对同一个服务的开发,那么该服务在研发期间就会存在多个版本并行的状态,为了保持不同版…

    Linux 2023年6月14日
    0120
  • 设计模式——命令模式

    命令模式定义 将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和回复的功能。 Receive接收者角色 该角色就是干活…

    Linux 2023年6月7日
    0114
  • MediaFire 网盘队列下载脚本

    MediaFire是一个国外的网盘。通常情况下,我们可以用浏览器下载MediaFire的文件,但是不能同时下载过多文件,只能几个几个地慢慢手动下载,比较费时间,所以我设计了这样一个…

    Linux 2023年6月6日
    0138
  • 访问github 与 mac修改hosts并刷新DNS

    加速githubhttps://ipaddress.com/website/github.global.ssl.fastly.nethttps://ipaddress.com/we…

    Linux 2023年6月8日
    0117
  • 测试计划

    ​ 1.测试计划的定义:描述需要完成的所有工作,包括被测项目的目的、背景、范围、资源、进度、环境、任务、策略,以及相应的风险和措施。 ​ 2.测试计划的作用: 对后面的测试过程起到…

    Linux 2023年6月7日
    079
  • 函数调用栈

    博客网址:www.shicoder.top微信:18223081347欢迎加群聊天 :452380935 这个分栏我们开始学习PWN,当然PWN也是自己的兴趣爱好,所以可能博客更新…

    Linux 2023年6月13日
    0127
  • Canal实时解析mysql binlog数据实战

    一、说明 通过canal实时监听mysql binlog日志文件的变化,并将数据解析出来 二、环境准备 1、创建maven项目并修改pom.xml配置文件 com.alibaba….

    Linux 2023年6月13日
    079
  • Linux嵌套目录权限的比较探究

    在/tmp目录下新建一个嵌套目录,名字分别为test_0、test_1、test_2。在test_2目录下新建普通文件,名为tryme。设置test_0和test_2的权限为777…

    Linux 2023年6月7日
    089
  • Android系统中有哪些日志信息和工具

    Android系统日志和工具 我们经常需要查看设备里面的各种日志信息。所以有必要了解android系统里面有哪些日志,以及用什么方式可以提取这些日志。以我手头的红米note4xpl…

    Linux 2023年6月7日
    099
  • Python 获取字典中的第一个键

    提供两种方法: 使用 list 将字典的 key 转换成列表,然后取第一个元素 [0]。如果想要最后一个 key 的话,就取最后一个元素 [-1]。 >>> my…

    Linux 2023年6月7日
    082
  • PYTORCH: 60分钟 | TORCH.AUTOGRAD

    torch.autograd 是PyTorch的自动微分引擎,用以推动神经网络训练。在本节,你将会对autograd如何帮助神经网络训练的概念有所理解。 背景 神经网络(NNs)是…

    Linux 2023年6月16日
    0175
  • [20210930]bbed读取数据块7 fffext.sh.txt

    [20210930]bbed读取数据块7 fffext.sh.txt –//一般bash shell脚本很少考虑执行效率,仅仅考虑利用它快速解决工作中遇到的问题. &#…

    Linux 2023年6月13日
    089
  • Apache Shiro 身份验证绕过漏洞 (CVE-2020-1957)

    一、漏洞描述 Apache Shiro 是一个功能强大且易于使用的 Java 安全框架,它执行身份验证、授权、加密和会话管理。 在具有 Spring 动态控制器的 1.5.2 之前…

    Linux 2023年6月13日
    0135
  • SQL查询语句–统计

    — 1、日统计查询填补 i->为时间差的天数 2022-05-10为终止时间 SET @i :=- 1; SELECT date_format( DATE_SUB( ’20…

    Linux 2023年6月14日
    088
  • jmeter学习记录–05–Beanshell2

    学习beanshell时有不少的例子、遇到不少问题。在此记录下。 测试实例列表 A1:使用Beanshell请求作为测试请求 一个打包的Jar包,直接对其内的方法进行测试。 第一步…

    Linux 2023年5月28日
    0111
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球