4

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

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

谢谢!

4

4 回答 4

4

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

  • 如果你真的确定,它永远不会移动:静态最终是要走的路。Pi,数学常数,诸如此类的东西就是一个很好的例子。

  • 如果您认为有潜在的变化,但需要易于代码操作并且不担心优势兼容性,那么枚举是可以的。前段时间我为错误代码做了这个。

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

于 2012-01-14T19:31:56.730 回答
2

static final当您无法形成一组明确的封闭选项时,使用字段,您可以从中选择变量的状态。相反,如果可以,您总是使用枚举。

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

于 2012-01-14T19:22:13.307 回答
0

还要考虑一件事——这些字符串会在不同的版本中改变吗?即您可能有法语版、中文版、“高级”版吗?如果是这样,Properties / ResourceBundles 等就是要走的路。

于 2012-01-14T19:56:48.817 回答
0

当您的常量集是固定的并且预计不会经常更改时,请使用枚举。如果它经常更改,则很难保持与以前版本的向后兼容性。如果在客户端服务器架构中两者都有一些 Enum 的不同版本。例如

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

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

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

于 2015-10-09T09:06:59.520 回答