news 2026/5/2 14:52:21

java_base_(枚举篇)省流版

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
java_base_(枚举篇)省流版

每日一学:基础知识精讲(枚举篇)

枚举(Enum):给提瓦特的 “固定规则” 定死边界

1. 枚举的核心逻辑

枚举是「一组固定、有限的常量集合」,用来表示 “不会变化的分类 / 状态”—— 比如一周七天、四季,核心价值是避免魔法值(随意写的字符串 / 数字)导致的错误,让代码更规范。

2. 原神场景类比:元素类型枚举

提瓦特的元素类型是固定的(风、岩、雷、草、水、火、冰),不会新增也不会减少,完美契合枚举的使用场景。

下面我将用传统的代码和枚举方法对比一下为什么枚举这么受欢迎。

创建枚举类的步骤:

1. 声明枚举类型:使用 enum 关键字声明枚举类

2. 定义枚举常量:在枚举类中定义具体的枚举实例,通常使用大写字母命名

3. 添加成员变量(可选):为枚举类添加属性来存储更多信息

4. 创建构造方法:枚举的构造方法必须是私有的,并用于初始化成员变量

5. 添加getter方法:提供公共方法来访问枚举实例的属性

6. 添加自定义方法(可选):在枚举中定义业务逻辑方法


7. 使用枚举:通过枚举常量名直接使用枚举

那么接下来看一下,同样的业务逻辑用传统的方法是怎么做的。

1.定义常量:使用 public static final String 定义各元素常量如 PYRO, HYDRO 等

2.创建数据载体类:定义 ElementInfo 类来封装元素的多种属性(英文名、代表角色、反应列表等

3.建立映射关系:
使用 HashMap 创建元素常量到 ElementInfo 对象的映射

在静态代码块中手动初始化所有元素信息

4.提供访问方法:
提供 getElementInfo() 方法通过元素常量获取详细信息

提供 canTriggerVaporize() 等业务逻辑方法

运行结果:

两者相互对比我们不难发现相比之下传统方式的缺点有:

1. 字符串硬编码风险

容易拼写错误,如将 "火" 写成 "炎"
缺乏编译期检查,错误只能在运行时发现

2. 维护一致性困难常

量定义和映射初始化分离,容易出现遗漏
添加新元素时需要同时修改多处代码

3. 初始化冗余

每个元素都需要手动创建 ElementInfo 对象
代码重复度高,维护成本大

4. 类型不安全

参数仍为 String 类型,可能传入非法值
编译器无法验证传入的字符串是否有效

5. 扩展性差

添加新的元素属性需要修改 ElementInfo 类
相关的业务方法也需要同步更新

相比枚举方式,传统实现虽然能达到相同功能,但在安全性、可维护性和代码简洁性方面都有明显劣势。

总结:

  • 传统方法的 “额外映射” 本质是用 Map / 实体类补全常量的属性绑定能力,是 “无奈的妥协”;
  • 枚举天生支持 “常量 + 属性 + 方法” 一体化,无需额外映射,是更优解;
  • 只有当取值范围动态变化(比如原神不定期新增活动类型)时,传统 Map 映射才更适用(可从配置文件加载映射,无需改代码)

ok,如果各位观众老爷觉得我讲的还不错,请给我留下一个小小的赞吧!🌂Q!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 23:58:32

Wan2.2-T2V-5B与YOLOv5/YOLOv8对比:不同AI模型的应用边界探讨

Wan2.2-T2V-5B与YOLOv5/YOLOv8对比:不同AI模型的应用边界探讨 在今天的AI应用现场,一个开发者可能会同时面对两个截然不同的任务:一边是市场部要求“根据一段文案自动生成3秒宣传视频”,另一边是工厂产线提出“实时检测产品表面是…

作者头像 李华
网站建设 2026/5/1 0:17:32

Navicat Mac版试用重置终极解决方案:完全免费无限使用指南

Navicat Mac版试用重置终极解决方案:完全免费无限使用指南 【免费下载链接】navicat_reset_mac navicat16 mac版无限重置试用期脚本 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 还在为Navicat Premium的14天试用期焦虑吗?数…

作者头像 李华
网站建设 2026/4/30 23:22:08

11、信号处理中的自适应核学习

信号处理中的自适应核学习 1. 自适应滤波概述 自适应滤波是信号处理中的核心主题。自适应滤波器是一种配备自适应算法的滤波器结构,该算法通常由误差信号驱动,用于调整传递函数。由于自适应滤波器能够调整其传递函数以匹配生成输入数据的系统的变化参数,因此在非平稳环境中…

作者头像 李华
网站建设 2026/4/30 23:22:03

音乐解锁技术深度解析:打破音频加密壁垒的专业指南

音乐解锁技术深度解析:打破音频加密壁垒的专业指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https://…

作者头像 李华
网站建设 2026/4/30 4:15:48

FLUX.1-dev文生图模型实战:如何通过Git下载并部署多模态AI生成镜像

FLUX.1-dev文生图模型实战:如何通过Git下载并部署多模态AI生成镜像 在数字内容创作日益自动化的今天,一个能“读懂提示词、画出想象力”的AI模型,正从科研实验室快速走向产品前线。无论是广告公司需要为新品生成视觉原型,还是独立…

作者头像 李华
网站建设 2026/4/30 0:35:18

终极指南:夸克网盘自动化签到系统技术架构深度解析

终极指南:夸克网盘自动化签到系统技术架构深度解析 【免费下载链接】quark-auto-save 夸克网盘签到、自动转存、命名整理、发推送提醒和刷新媒体库一条龙 项目地址: https://gitcode.com/gh_mirrors/qu/quark-auto-save 夸克网盘自动化签到系统通过精心设计的…

作者头像 李华