gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 00:24:42 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com