2026/1/17 9:31:49
网站建设
项目流程
网站链接加密,个人网站可以做品牌推广,凡科精选app,烟台建站服务每日一学#xff1a;基础知识精讲#xff08;枚举篇#xff09;枚举#xff08;Enum#xff09;#xff1a;给提瓦特的 “固定规则” 定死边界1. 枚举的核心逻辑枚举是「一组固定、有限的常量集合」#xff0c;用来表示 “不会变化的分类 / 状态”—— 比如一周七天、四…每日一学基础知识精讲枚举篇枚举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