在名称-值对中声明预定义常量时,我一直在“java.util.Properties”、“enums”或具有“public static final”值的单独类之间随机选择。
为了将来参考,我需要一些关于采取哪种方法的指导方针。
谢谢!
在名称-值对中声明预定义常量时,我一直在“java.util.Properties”、“enums”或具有“public static final”值的单独类之间随机选择。
为了将来参考,我需要一些关于采取哪种方法的指导方针。
谢谢!
这一切都取决于您不断的生命周期。根据定义,常量是不动的东西。选择正确的方法将是一个可能发生变化和重新包装需求的问题。
如果你真的确定,它永远不会移动:静态最终是要走的路。Pi,数学常数,诸如此类的东西就是一个很好的例子。
如果您认为有潜在的变化,但需要易于代码操作并且不担心优势兼容性,那么枚举是可以的。前段时间我为错误代码做了这个。
如果您认为有潜在的更改,但您不希望此更改影响您的代码,那么属性(带有资源包)是更好的选择。标签(翻译)、初始设置等也是一个很好的例子。
static final
当您无法形成一组明确的封闭选项时,使用字段,您可以从中选择变量的状态。相反,如果可以,您总是使用枚举。
现在,当您想要保留键值字典时,不管它们的性质如何,是时候使用 Properties 类型对象或有时使用 Map。
还要考虑一件事——这些字符串会在不同的版本中改变吗?即您可能有法语版、中文版、“高级”版吗?如果是这样,Properties / ResourceBundles 等就是要走的路。
当您的常量集是固定的并且预计不会经常更改时,请使用枚举。如果它经常更改,则很难保持与以前版本的向后兼容性。如果在客户端服务器架构中两者都有一些 Enum 的不同版本。例如
服务器:public enum Priority{
HIGH,LOW,MEDIUM,AVERAGE
}
客户 :public enum Priority{
HIGH,LOW,MEDIUM}
假设如果服务器将 Priority.AVERAGE 发送给客户端,那么客户端将抛出异常。