繁体   English   中英

属性或枚举或静态最终

[英]Properties or Enums or static final

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

为了将来参考,我需要一些指导方针。

谢谢!

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

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

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

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

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

现在,当您想要保留键值字典时,无论其性质如何,都应该使用“属性”类型对象或有时使用“地图”。

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM