枚举 vs 常量类的选择标准
使用枚举的情况
-
有限且固定的值集合
- 如:[StatsTypeEnum](file://D:\Desktop\ai_wei\projects\F-XA-01\code\f-xa-01-api\f-xa-01-api-common\src\main\java\com\aiwei\common\enumeration\StatsTypeEnum.java#L7-L50)(平均值、方差、范围、幅度)
- 如:星期几、月份、状态码等
-
需要类型安全的参数传递
- 避免传入非法值
- 编译时就能发现错误
-
需要遍历所有可能值
- 使用
values()方法获取所有枚举值 - 如:下拉菜单选项、配置类型等
- 使用
-
配合 switch 语句使用
- 提供更好的 IDE 支持和类型检查
使用常量类的情况
-
单纯的键值对映射
- 如:[MessageConstant](file://D:\Desktop\ai_wei\projects\F-XA-01\code\f-xa-01-api\f-xa-01-api-common\src\main\java\com\aiwei\common\constant\MessageConstant.java#L5-L84) 中的错误消息
- 不需要类型安全检查的字符串或数字
-
配置信息或标识符
- 如:数据库表名、API 端点、环境变量名
- 值可能会动态变化
-
大量独立的常量
- 没有关联性或逻辑分组
- 不需要枚举的特殊方法(
values()、ordinal()等)
-
向后兼容性考虑
- 已有大量代码使用字符串或数字常量
- 不方便重构为枚举
您项目中的应用
- [StatsTypeEnum](file://D:\Desktop\ai_wei\projects\F-XA-01\code\f-xa-01-api\f-xa-01-api-common\src\main\java\com\aiwei\common\enumeration\StatsTypeEnum.java#L7-L50) ✓ 应该用枚举 - 固定的统计类型,需要类型安全
- [MessageConstant](file://D:\Desktop\ai_wei\projects\F-XA-01\code\f-xa-01-api\f-xa-01-api-common\src\main\java\com\aiwei\common\constant\MessageConstant.java#L5-L84) ✓ 适合用常量类 - 错误消息文本,不需要枚举特性