V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Vimax
V2EX  ›  Java

常量类和枚举分别适用哪些场景?

  •  1
     
  •   Vimax · 2020-08-18 09:15:56 +08:00 · 2837 次点击
    这是一个创建于 1318 天前的主题,其中的信息可能已经有所发展或是发生改变。

    哪些业务场景更推荐使用常量类

    哪些业务场景更推荐使用枚举

    9 条回复    2020-08-19 10:59:47 +08:00
    WhereverYouGo
        1
    WhereverYouGo  
       2020-08-18 09:31:18 +08:00   ❤️ 1
    1.当常量数量不确定时使用类常量;
    2.当常量数量确定时使用枚举;
    3.建议将类常量替换为接口常量;
    4.建议将枚举替换为 ImmutableMap;
    Vimax
        2
    Vimax  
    OP
       2020-08-18 10:41:42 +08:00
    @sweetsorrow211 非常感谢。
    playboy0
        3
    playboy0  
       2020-08-18 11:29:36 +08:00   ❤️ 1
    @sweetsorrow211 effectivejava 说接口常量是不良习惯啊,接口只能用来定义类型
    nl101531
        4
    nl101531  
       2020-08-18 12:05:41 +08:00 via iPhone
    枚举是强类型,你需要类型约束,就上枚举。如果只是记录到一个统一位置,那就用常量
    talen666
        5
    talen666  
       2020-08-18 12:10:10 +08:00
    @playboy0 但是在接口里,可以省略 3 个关键字,不是很舒服吗
    SingeeKing
        6
    SingeeKing  
       2020-08-18 12:30:16 +08:00 via iPhone
    我也更喜欢把相关常量定义在接口,不过 sonarlint 直接禁止
    SoloCompany
        7
    SoloCompany  
       2020-08-18 12:32:50 +08:00
    1. 概念上应该只有常量不存在常量类
    2. 如果一个类上面定义的全是常量, 那么通常这个应该是一个枚举类
    3. 枚举类上也可以定义常量, 关键还是看互相之间的逻辑关联
    passerbytiny
        8
    passerbytiny  
       2020-08-18 12:52:58 +08:00 via Android
    用 WHITE 作为# FFFFFF 的别名,这是常量。

    只能从 WHITE 、BLACK 中选一个,这是枚举。

    此外,给枚举定义额外的值,这不是枚举的本意,是 Java 附加的特性,最好不要用,巨坑。
    zhady009
        9
    zhady009  
       2020-08-19 10:59:47 +08:00
    @passerbytiny 哪里坑?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1247 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 17:57 · PVG 01:57 · LAX 10:57 · JFK 13:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.