具有少量常量的java枚举或类。哪一个是有利的?

具有少量常量的java枚举或类。哪一个是有利的?,java,Java,我有一组常数。枚举将是定义一组常量的最佳选项。即使我们可以在java类中定义所有常量。两者的优点和缺点是什么?我的意思是哪一个更有利?请帮帮我 谢谢 相关常数的枚举最好表示为enum 如果常数不具有共同特征,但具有多样性,则不要使用enum。enum: 自Java1.5以来 类型安全 您可以遍历所有定义的值 每个常量可以有更多属性-编写简单 静态字段: 适用于所有java版本 我会选择enum。Enum为您提供了与类几乎相同的灵活性(毕竟,Enum是一个类!),因此您可以随意声明字段、方法

我有一组常数。枚举将是定义一组常量的最佳选项。即使我们可以在java类中定义所有常量。两者的优点和缺点是什么?我的意思是哪一个更有利?请帮帮我


谢谢

相关常数的枚举最好表示为
enum

如果常数不具有共同特征,但具有多样性,则不要使用enum。

enum:

  • 自Java1.5以来
  • 类型安全
  • 您可以遍历所有定义的值
  • 每个常量可以有更多属性-编写简单
静态字段:

  • 适用于所有java版本

    • 我会选择
      enum
      。Enum为您提供了与类几乎相同的灵活性(毕竟,Enum是一个类!),因此您可以随意声明字段、方法和构造函数。忘了继承吧,但是嘿,不管哪种方式,你都应该喜欢组合而不是继承;)

      Enum还为您提供了一些非常酷的功能,而不会带来任何麻烦:

    • 它是类型安全的
    • 它是线程安全的
    • 您可以在
      开关
      for循环
      语句中使用它
    • 您有一个整洁的API来处理您定义的常量(如
      valueOf(String)

    • 我建议看一看Josh Bloch的《高效Java》,你会惊讶于它们的强大功能。

      如果你能给出一个具体的例子会有所帮助。谢谢你的回复。如果使用enum,是否可以实现继承?谢谢不可以。您不能继承枚举,因为它被声明为
      final
      class。如果您仔细考虑的话,确实没有必要这样做,因为它可能会给您的代码增加一些不必要的复杂性,这可能会破坏您的客户机。老实说,我从未发现自己也需要这样做。坚持简单的列举,你会很好:)@Bachman:谢谢你的回答。枚举是可序列化的。如果我声明一个类中的所有常量,它是可序列化的吗?请帮助我?在Java中,为了使类可序列化,您需要满足一些条件。但这超出了本问题的范围:)