属性或枚举或静态最终

时间:2012-01-14 19:19:23

标签: java name-value

当在名称 - 值对中声明预定义常量时,我​​一直在“java.util.Properties”,“enums”或具有“public static final”值的单独类中随机选择。

为了将来参考,我需要一些指导方针,以便采取哪种方法。

谢谢!

4 个答案:

答案 0 :(得分:4)

这一切都取决于你不断的生命周期。 根据定义,常量是不移动的东西。选择正确的方法将是一个可能发生变化和重新包装需求的问题。

  • 如果你真的确定,它永远不会动起来:静态决赛是要走的路。 Pi,数学常数,类似的东西就是一个很好的例子。

  • 如果您认为存在潜在的变化,但需要易于操作代码并且不担心上升兼容性,那么枚举就可以了。我不久前为错误代码做了那个。

  • 如果您认为存在潜在的变化,但您不希望此更改影响您的代码,则属性(使用资源包)是更好的选择。标签(翻译),初始设置等也是一个很好的例子。

答案 1 :(得分:2)

当您无法形成一组明确的闭合选项时,可以使用

static final字段,您可以从中选择变量的状态。相反,如果可以,你总是使用枚举。

现在,当你想保留一个键值字典时,不管它们的性质如何,是时候使用一个属性类型对象,有时候是一个Map。

答案 2 :(得分:0)

还有一件事需要考虑 - 这些字符串会在不同的版本中发生变化吗?也许你有法语版,中文版,“高级版”?如果是这样,可以使用Properties / ResourceBundles等。

答案 3 :(得分:0)

当您的常量集固定且预计不会经常更改时,请使用枚举。如果它经常更改,那么很难保持与以前版本的向后兼容性。如果在客户端服务器体系结构中都有一些Enum的不同版本。 E.g

服务器:public enum Priority{ HIGH,LOW,MEDIUM,AVERAGE}

客户:public enum Priority{ HIGH,LOW,MEDIUM}

假设服务器向客户端发送Priority.AVERAGE,那么客户端将抛出异常。