Java 5+中的静态字符串常量VS枚举

我已经阅读了该问题和答案:

在Java中实现常量的最佳方法是什么?

并提出了一个决定,即枚举是实现一组常量的更好方法。另外,我在Sun网站上阅读了一个如何将行为添加到枚举的示例(请参见前面提到的文章中的链接)。因此,将带有String键的构造函数添加到枚举中以容纳一堆String值没有问题。

这里的唯一问题是,我们需要添加“

.nameOfProperty”来访问String值。因此,在代码中的每个地方,我们都不仅需要使用常量名称(EnumName.MY_CONSTANT)来寻址常量值,还需要使用常量名称(Enum.MY_CONSTANT.propertyName)。

我在这里吗?你怎么看呢?

回答:

是的,命名似乎有点长。但是没有想象中的那么多…

  1. 因为enum类已经给出了一些上下文( “这属于哪个常数集?” ), (强类型已与其他枚举中的相似命名实例区分开)。

  2. 另外,您可以 来进一步减少长度。您不应在各处使用它,以免造成混淆,但我认为与枚举紧密关联的代码可以使用。

  3. 在枚举上的 ,您不使用类名。(在Java 7之前的Strings上甚至无法进行切换。)

  4. ,使用短名称。

  5. 由于枚举有方法,因此许多会大量使用常量的低级代码可能会从业务代码迁移到枚举类本身(动态或静态方法)。如我们所见,将 可进一步减少长名称的使用。

  6. 常量通常按组进行处理,例如if用6个常量之一或其他四个常量进行相等性测试。枚举配EnumSets有一种contains方法(或类似的返回适当组的动态方法),使您可以 (作为第二个优点,请注意,这两种实现分组的速度非常快-O(1)-内存很低!)。

综合以上几点, !

以上是 Java 5+中的静态字符串常量VS枚举 的全部内容, 来源链接: utcz.com/qa/404694.html

回到顶部