【问题标题】:How to organize constants depending on a run time value?如何根据运行时值组织常量?
【发布时间】:2019-02-02 21:17:20
【问题描述】:

我在我的代码中使用常量并将它们作为静态成员放入它们所属的类中(包类中的标头大小等)。

现在我遇到了一个问题,一个决定许多其他常数的中心常数实际上取决于我仅在启动时获得的值。

假设数据包始终具有相同的标头长度,但标头长度取决于它经过的服务器数量。

该数量在计划期间保持不变,但当然是事先不知道的。

似乎我应该有一个常量类来计算常量,当值在启动时已知,但这会将它们从所有相关类中剔除。

【问题讨论】:

  • 您可以将常量定义为基于运行时参数的计算,不是吗?例如:private static final int HEADER_SIZE = Main.args[0] * 256;

标签: java oop constants


【解决方案1】:

但这会将它们从所有相关类中剔除

您可以在启动时使用带有“基本”常量的单例,然后将计算标题长度和其他派生常量的逻辑放入它们的相关类中。

【讨论】:

  • 什么时候调用这个逻辑?在构造函数中?
  • 我会把它放到静态方法中。也许在第一次调用静态方法时计算值并将值放入静态字段中,然后在后续调用中返回该字段的值
  • 那么静态getter,而不是常量?
猜你喜欢
  • 1970-01-01
  • 2021-12-12
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-26
  • 2021-06-20
相关资源
最近更新 更多