Java的枚举类型

news/2025/2/21 8:43:22/

如果类的对象的数量只有有限个,并且可以确定对象的属性,那么考虑使用枚举类。例如:

  • 性别:Man(男)、Woman(女)
  • 订单状态:Nonpayment(未付款)、Paid(已付款)、Delivered(已发货)、Checked(已确认收货)

定义枚举类型

public enum UserType {// 1.提供枚举类的对象(枚举常量)common("普通用户", 0),sectionAdmin("板块管理员", 1),superAdmin("超级管理员", 2);// 2.对象的属性private String typeName;private Integer typeId;// 3.私有化构造器(private 可省略)private UserType(String typeName, Integer typeId) {this.typeName = typeName;this.typeId = typeId;}
}

介绍枚举类型

如果需要的话,可以在枚举类型中添加一些构造器、方法和域。当然,构造器只是在构造枚举常量的时候被调用。

所有的枚举类型都是 Enum 类的子类。它们继承了这个类的许多方法。其中最有用的一个是 toString() 方法,这个方法能够返回枚举常量名。例如,Size.SMALL.toString() 将返回字符串 “SMALL”。

toString() 的逆方法是 valueOf() 静态方法。例如,语句:Size s = Enum.valueOf(Size.class, “SMALL”); 将变量 s 设置成 Size.SMALL。

每个枚举类型都有一个静态的 values() 方法,它将返回一个包含全部枚举值的数组。

ordinal 方法返回 enum 声明中枚举常量的位置,位置从 0 开始计数。例如:Size.SMALL.ordinal() 返回 0。

public static void main(String[] args) {// [common, sectionAdmin, superAdmin]UserType[] userTypes = UserType.values();// 返回具有指定名称的枚举常量UserType common = UserType.valueOf("common");// 返回具有指定名称的指定枚举类型的枚举常量UserType common1 = Enum.valueOf(UserType.class, "common");// 返回枚举常量的名称 (Enum 类重写了 toString() )String name = common.toString();
}

枚举类实现接口

情况一:把枚举类当作正常的类,在类中实现接口

情况二:每个枚举常量分别实现接口

public enum UserType implements UserService {// 1.提供枚举类的对象common("普通用户", 0) {@Overridepublic void method() {}},sectionAdmin("板块管理员", 1) {@Overridepublic void method() {}},superAdmin("超级管理员", 2) {@Overridepublic void method() {}};// 2.对象的属性private String typeName;private Integer typeId;// 3.私有化的构造器private UserType(String typeName, Integer typeId) {this.typeName = typeName;this.typeId = typeId;}
}

参考资料

《Java核心技术卷一:基础知识》(第10版)第5章:5.6 枚举类


http://www.ppmy.cn/news/67806.html

相关文章

windows下升级nodejs

重新安装新版nodejs 重新安装nodejs然后设置环境变量 安装yarn npm install -g yarn --registryhttps://registry.npm.taobao.org yarn config set registry https://registry.npm.taobao.org -g yarn config set sass_binary_site http://cdn.npm.taobao.org/dist/node-sa…

MySQL数据库笔记-基础篇

文章目录 MySQL概述数据库相关概念小总结 MySQL数据库版本:启动与停止客户端连接关系型数据库数据模型小总结 SQLSQL通用语法SQL分类DDL数据库操作查询创建数据类型数据类型的使用练习 修改删除小总结 DML添加数据修改数据删除数据小总结 DQL基本查询条件查询 DCL M…

《Netty》从零开始学netty源码(五十七)之ServerBootstrap.bind()

目录 ServerBootstrap.bind()initAndRegister()init()register()doBind0() ServerBootstrap.bind() 在第一篇的HelloWorld中通过ServerBootstrap.bind()方法绑定端口号并最终启动Netty的服务,服务端的bind过程如下: 上面的代码主要分成两部分&#xff0…

5G干扰排查优化方案介绍!

干扰成因 干扰源的发射信号(阻塞信号、加性噪声信号)从天线口被放大发射出来后,经过了空间损耗L,最后进入被干扰接收机。如果空间隔离不够的话,进入被干扰接收机的干扰信号强度够大,将会使接收机信噪比恶化…

1053 Path of Equal Weight(超级无敌详细注释+45行代码)

分数 30 全屏浏览题目 切换布局 作者 CHEN, Yue 单位 浙江大学 Given a non-empty tree with root R, and with weight Wi​ assigned to each tree node Ti​. The weight of a path from R to L is defined to be the sum of the weights of all the nodes along the pa…

使用ceph-ansible部署分布式存储Ceph-octopus版本

使用ceph-ansible部署分布式存储Ceph-octopus版本 1. Ceph基础概念及部署方式1.1. Ceph基本概念1.2. Ceph部署方式2. 系统初始化配置3. Ceph集群部署3.1. Ansible安装与配置3.2. ceph-ansible安装与配置3.2.1. 下载ceph-ansible3.2.2. 安装ceph-ansible依赖3.2.3. 修改ceph配置…

[Mysql] MySQL索引与事务

黎明前的黑暗最难度过,但一旦坚持住,便是灿烂朝阳. 文章目录 1. 索引1.1 索引的概念1.2 索引的创建与使用 2. 事务2.1 事务的使用2.2 事务的特性与隔离机制2.2.1 隔离级别 1. 索引 1.1 索引的概念 索引是一种特殊的文件,可以对表中一列或多列创建索引,…

【Linux】Shell脚本之函数的操作+实战详解(建议收藏⭐)

🍁博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 文章目录 shell脚本函数设置函数的意义函数的基…