java - 安全高效的静态类修改方法

标签 java

我正在改编用 Java 编写的模拟。我有限的背景都是 C++。

当前的模拟实现依赖于一个名为 Parameters 的类。 Simulation 类的实例引用 Parameters 的属性,我认为它从未实例化过。 Parameters 类的结构如下

public class Parameters {
  public static int day = 0;
  public static final int endDay = 365;
  ....
  public static int getDate() {
    return day;
  }
}

Simulation的实例中,存在对例如Parameters.day的引用。

目前,Parameters 的所有属性都是硬编码的。我需要能够使用命令行参数更改其中一些。例如,我希望能够使用 Parameters::setEndDay(int customDay) 类型的函数设置不同的 endDay

我的第一个想法是创建一个实例(Parametersparameters = newParameters())并完全重写Parameters类,以便它的所有属性都是私有(private)的并且只能访问通过访问器函数。 我担心这种方法不是很有效。到目前为止,我尝试了一种混合方法,在该方法中我创建了 Parameters 类的实例,然后将其传递给到 Simulation 的实例,同时仍然偶尔引用 Parameters.day (我不需要更改)。

问题之一是我对 Java 中的类特权没有很好的认识。

感谢建议。

最佳答案

如果您将所有这些设置为非最终的,那么您可以在实例化 Simulation 类之前直接从命令行参数设置它们:

// read command-line arguments

Parameters.endDay = 123; // this will change all reference to Parameters.endDay
new Simulation(...)

关于java - 安全高效的静态类修改方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10262021/

相关文章:

java - 数组未正确存储值

java - 为什么两个 LocalDate 变量之间的比较不起作用?

java - java中的arrayDeque.peek()方法如何与while循环一起工作

java - 在 Java 中检查并从字符串中提取一个数字

java - 嵌入式 hazelcast 防止 Tomcat 中的干净关闭

java - 无法使用 JPA 2 Criteria API 从 Oracle View 中选择列

Java IF-ELSE IF-ELSE 跳过 if 和 else if 检查并自动打印出 else 语句

java - 替换 Java 中过时的 Hashtable 类

java - 获取昨天 - 日期类型的方法 getDate() 已弃用

java - RXJava 暂停缓冲区