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)

大家都在看

  • Docker基础知识

    Docker 是什么 Docker 经常被提起的特点: Docker 技术的基础: Docker 组件: Docker 安装 Docker 常见命令 容器相关操作 获取容器相关信息…

    Linux 2023年6月7日
    0104
  • 每天一个 HTTP 状态码 102

    102 Processing 是用于 WebDAV 请求的一种状态码… 102 Processing 102 Processing 是用于 WebDAV协议 请求的状态…

    Linux 2023年6月7日
    0101
  • nginx配置文件讲解及示例(可复制)

    【示例一】 运行用户 user www-data; 启动进程,通常设置成和cpu的数量相等 worker_processes 1; 全局错误日志及PID文件 error_log /…

    Linux 2023年6月6日
    076
  • 插入排序算法C语言实现

    插入排序算法C语言实现 我写出来的排序算法用printf一步步解读,与google algorithm APP上模拟的单步执行不一致。 于是参考了https://www.cnblo…

    Linux 2023年6月14日
    0109
  • 使用GVT-g为KVM添加虚拟显卡渲染3D图形

    0x00 前言 可以在KVM虚拟机看电影、玩游戏哦。 我的环境如下: 0x01 启动GVT-g 要启用IOMMU、i915,编辑grub文件: $ sudo vim /etc/de…

    Linux 2023年5月27日
    0102
  • linux命令之tar 解压 压缩

    tar(全称:tape archive )命令用于备份文件。tar 是用来 创建或者 还原备份文件的工具程序,它可以加入,解开备份文件内的文件。tar linux说明 tar [&…

    Linux 2023年5月27日
    075
  • 设计模式——命令模式

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

    Linux 2023年6月7日
    0105
  • Python递归遍历目录下所有文件

    递归遍历目录下所有文件 方法一 import os def gci(filepath): #遍历filepath下所有文件,包括子目录 files = os.listdir(fil…

    Linux 2023年6月13日
    0103
  • 关于在Rocky linux下安装dotnet sdk不成功的问题

    Rocky Linux 9,运行 dnf install -y dotnet-sdk-6.0 一切正常,运行起来非常顺利,安装完毕。但是非常诡异,运行 dotnet –list-…

    Linux 2023年6月6日
    0109
  • 浪剑天下H5游戏详细图文架设教程

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    090
  • pod(二):创建包含多个容器的pod(sidecar)

    服务器版本 docker软件版本 CPU架构 CentOS Linux release 7.4.1708 (Core) Docker version 20.10.12 x86_64…

    Linux 2023年6月7日
    098
  • Ansible简介

    Ansible 是一种常用的自动运维化工具,基于 python 开发,分布式,无需客户端,轻量级,配置语言采用 YAML。 模块化:调用特定的模块,完成特殊的任务。 2.Param…

    Linux 2023年6月6日
    091
  • 大厂们的 redis 集群方案

    redis 集群方案主要有两类,一是使用类 codis 的架构,按组划分,实例之间互相独立;另一套是基于官方的 redis cluster 的方案;下面分别聊聊这两种方案; 类 c…

    Linux 2023年5月28日
    084
  • linux man 中文手册安装

    Linux Man (手册) linux man 中文手册安装 步骤 下载源程序 解压文件并进入该目录 unzip master.zip ;cd master 安装支持程序 sud…

    Linux 2023年6月7日
    073
  • Golang中通过go-redis操作Redis

    参考地址:https://github.com/go-redis/redis 定义上下文以及连接的相关信息 var ctx = context.Background() var r…

    Linux 2023年5月28日
    089
  • 国产化之Arm64 CPU+银河麒麟系统安装.NetCore

    背景 某个项目需要实现基础软件全部国产化,其中操作系统指定银河麒麟,银河麒麟就是一个Linux发行版,数据库使用达梦V8,这个数据库很多概念和Oracle相似,CPU平台的范围:龙…

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