【问题标题】:What is the difference between Enum and Constant Java class? [duplicate]枚举和常量 Java 类有什么区别? [复制]
【发布时间】:2014-07-17 19:47:42
【问题描述】:

我对@9​​87654323@感到困惑。

在哪里以及如何使用Enum

如果我将使用 Enum 而不是 constant 那么会有什么好处?

谁能给我解释一下?

【问题讨论】:

标签: java enums


【解决方案1】:

主要优点是类型安全。使用一组常量,可以使用相同内在类型的任何值,从而引入错误。对于枚举,只能使用适用的值。

【讨论】:

  • 非常感谢您的回答。
【解决方案2】:

Enum 类用于指定将在应用程序中经常使用的常量范围。

来自http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

您应该在需要表示一组固定常量的任何时候使用枚举类型。 常见示例包括罗盘方向(NORTH、SOUTH、EAST 和 WEST 的值)和星期几。

一个常量类(假设这就是您所说的),实际上是为一个您不会更改的实体对象指定的。从技术上讲,Enum 类是具有更多定义的常量类,但 Enum 类的优势是 some pre-defined functions,您必须在自己的常量类中定义它。但是,您还应该注意,这对于小型的单例示例可能有点过分了。

此外,Enum 类是类型安全的,而静态字段则不是。现在可以进行编译时错误检查,而不是使用常量类会发生的运行时潜在错误。这进一步提高了可读性,因为不会出现常量列表索引不可用的错误。这在this post 中得到了很好的解释,目前的最佳答案。

【讨论】:

  • 假设我将在常量中使用相同的 compass 属性。那么我为什么要使用 Enum。
  • 谢谢我得到了答案。现在我被清除了。
  • 如果您清楚,那么您应该接受和/或支持答案
【解决方案3】:

从 Java 8.0 开始,关键字“constant”不存在。

如果您的意思是“常量”: 这个关键字在Java中的已知关键字中(从开始到今天——8.0), 但它没有用,任何编译器如果找到 this 关键字都不应该编译。

枚举: 当您有特定的逻辑值并且不想在字符串中处理它们时使用它们, 喜欢:

public enum AcceptableColours {
    BLACK,
    WHITE,
    GREY
}

在开发期间匹配枚举值更安全

AcceptableColours currentColour = object.getColour;
if (currentColour == acceptableColours.BLACK) {
    // do something
} else if (currentColour == acceptableColours.WHITE) {
    // do something different
}

比匹配字符串值

AcceptableColours currentColor = object.getColour;
if (currentColor.equals("black")) {
    // do something
} else if (currentColor.equals("white")) {
    // do something different
}

...想象一下在枚举值上有更多变化的大型应用程序(如银行软件、保险软件等),其中一些字符串值更容易拼错, 瞧,愉快的调试......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多