哪些常量用枚举,哪些用类

枚举 vs 常量类的选择标准

使用枚举的情况

  1. 有限且固定的值集合

    • 如: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)(平均值、方差、范围、幅度)
    • 如:星期几、月份、状态码等
  2. 需要类型安全的参数传递

    • 避免传入非法值
    • 编译时就能发现错误
  3. 需要遍历所有可能值

    • 使用 values() 方法获取所有枚举值
    • 如:下拉菜单选项、配置类型等
  4. 配合 switch 语句使用

    • 提供更好的 IDE 支持和类型检查

使用常量类的情况

  1. 单纯的键值对映射

    • 如: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) 中的错误消息
    • 不需要类型安全检查的字符串或数字
  2. 配置信息或标识符

    • 如:数据库表名、API 端点、环境变量名
    • 值可能会动态变化
  3. 大量独立的常量

    • 没有关联性或逻辑分组
    • 不需要枚举的特殊方法(values()、ordinal() 等)
  4. 向后兼容性考虑

    • 已有大量代码使用字符串或数字常量
    • 不方便重构为枚举

您项目中的应用

  • 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) ✓ 适合用常量类 - 错误消息文本,不需要枚举特性
相关推荐
Flynn Liang1 小时前
AiServices 源码级拆解:一个接口如何变成 RAG Agent
java·langchain·源码分析·rag·langchain4j·aiservices
Flynn Liang1 小时前
LangChain4j 1.23 架构全景:Java 大模型应用的 6 层抽象
java·langchain·大模型·rag·ai agent·langchain4j
聪明的笨猪猪2 小时前
实际工程问题:AI生成Redis分布式锁的原子性缺陷导致库存超卖
java·经验分享·面试·ai编程
软件技术NINI2 小时前
基于SpringBoot和Vue的新能源汽车销售推荐系统
java·vue.js·spring boot·后端·汽车·毕业设计·毕设
Flynn Liang3 小时前
LangChain4j 生产级工程骨架:12 个模块 + Docker 一键启动
java·spring boot·langchain·rag·langchain4j
噢,我明白了4 小时前
JAVA中的一些基础应用知识点
java·开发语言
SL_staff5 小时前
私有化低代码不是妥协,而是企业级数字化的自主可控主航道
java
装不满的克莱因瓶5 小时前
【SpringAI Alibaba】ReactAgent结构化输出OutputType与OutputSchema实战
java·人工智能·ai·springai·springaialibaba
秋天的怀念_David5 小时前
算法一千零一夜 · 第二十八夜 注册
java·程序人生·算法
Java码农也是农5 小时前
Spring 事务详解:@Transactional 如何生效、何时回滚、传播行为怎么选
java·spring boot·spring·事务