我正在改编用 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/