具有少量常量的java枚举或类。哪一个是有利的?
我有一组常数。枚举将是定义一组常量的最佳选项。即使我们可以在java类中定义所有常量。两者的优点和缺点是什么?我的意思是哪一个更有利?请帮帮我具有少量常量的java枚举或类。哪一个是有利的?,java,Java,我有一组常数。枚举将是定义一组常量的最佳选项。即使我们可以在java类中定义所有常量。两者的优点和缺点是什么?我的意思是哪一个更有利?请帮帮我 谢谢 相关常数的枚举最好表示为enum 如果常数不具有共同特征,但具有多样性,则不要使用enum。enum: 自Java1.5以来 类型安全 您可以遍历所有定义的值 每个常量可以有更多属性-编写简单 静态字段: 适用于所有java版本 我会选择enum。Enum为您提供了与类几乎相同的灵活性(毕竟,Enum是一个类!),因此您可以随意声明字段、方法
谢谢 相关常数的枚举最好表示为
enum
如果常数不具有共同特征,但具有多样性,则不要使用enum。enum:
- 自Java1.5以来
- 类型安全
- 您可以遍历所有定义的值
- 每个常量可以有更多属性-编写简单
- 适用于所有java版本
- 我会选择
enum
。Enum为您提供了与类几乎相同的灵活性(毕竟,Enum是一个类!),因此您可以随意声明字段、方法和构造函数。忘了继承吧,但是嘿,不管哪种方式,你都应该喜欢组合而不是继承;)
Enum还为您提供了一些非常酷的功能,而不会带来任何麻烦:
开关
和for循环
语句中使用它valueOf(String)
)我建议看一看Josh Bloch的《高效Java》,你会惊讶于它们的强大功能。如果你能给出一个具体的例子会有所帮助。谢谢你的回复。如果使用enum,是否可以实现继承?谢谢不可以。您不能继承枚举,因为它被声明为
final
class。如果您仔细考虑的话,确实没有必要这样做,因为它可能会给您的代码增加一些不必要的复杂性,这可能会破坏您的客户机。老实说,我从未发现自己也需要这样做。坚持简单的列举,你会很好:)@Bachman:谢谢你的回答。枚举是可序列化的。如果我声明一个类中的所有常量,它是可序列化的吗?请帮助我?在Java中,为了使类可序列化,您需要满足一些条件。但这超出了本问题的范围:)