【问题标题】:What are enums for in Java? [duplicate]Java 中的枚举有什么用? [复制]
【发布时间】:2014-04-28 01:36:43
【问题描述】:

使用枚举与整数相比有什么优势?我试图在纸牌游戏中代表花色,我认为 1,2,3,4 就足够了。但是我的老板说我需要用枚举来做。为什么?

【问题讨论】:

  • 1 对应什么西装?不是很直观。如果我用西装SPADES 等定义一个枚举,则更具可读性。
  • 1.有意义的名称,2. 它们本身也是类,带有方法。考虑TimeUnitTimeUnit.SECONDS.sleep(10L)

标签: java enums


【解决方案1】:

枚举很好,因为它们可以删除“幻数”——这些数字本身并没有真正的意义。通过将这些数字替换为实际值,您的代码会更有意义并遵循更好的设计原则。

此外,枚举可以防止将不正确的值传递给函数。如果你的枚举只定义了Spades, Hearts, ClubsDiamonds,那么只能传递枚举的对象。

【讨论】:

    【解决方案2】:

    如果你使用ints,那么西装5是什么意思?你必须处理那个案子。如果调用者看到int 并意外通过2 尝试创建“平分”怎么办?仅使用ints,同一个数字在不同域中可能代表多个有效的不同值。

    使用枚举更加类型安全。它只能有您自己的预定义值,并且不同的类型名称不允许意外地将有效值从另一个域传递到您的受限值域。

    【讨论】:

      【解决方案3】:

      enum in java 提供编译时检查。因此,如果您在程序中传递100,它将编译但在运行时会失败。 enum 将确保不会发生这种情况。

      【讨论】:

        猜你喜欢
        • 2012-04-08
        • 2012-07-08
        • 1970-01-01
        • 2016-10-02
        • 1970-01-01
        • 2015-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多