gpt4 book ai didi

java - 初始化静态类成员 - 请澄清一下

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:03:40 26 4
gpt4 key购买 nike

我是 Java 的新手,我希望得到一些关于何时需要初始化静态类变量的说明。插入我的代码有点多,所以让我将其分解为基本元素。我有一个执行特定任务的对象。此任务需要设置许多参数。这些参数最好是静态的,因为该类的任何实例都将使用相同的参数。该对象基本上是一个自动执行任务的机器人。机器人的第一个实例必须经过“训练”才能完成任务(由用户输入引导)。在此“训练”中,它学习了一些关键参数,并从中计算出所需的其他参数(通过私有(private)方法)。然后将关键参数保存到文件中,以供其他实例和程序的后续运行使用(即只进行一次训练)。

代码的结构是这样的......

public class Master {
static int[] keyPara;
static int[] otherPara;

public Master() {
/* some defining stuff */
}

void doGuidedTask() {
/* some stuff that calls private methods, etc */
}

void doTask() {
/* some stuff that calls private methods etc */
}

void calcOtherPara() {
/* method to calculate other parameters given key parameters */
}

void saveKeyPara() {
/* method to save key parameters to File */
}
}

问题是在代码中初始化这些参数的正确/最佳方法是什么? keyPara 是通过实现 doGuidedTask 方法确定的,而 otherPara 是使用 calcOtherPara 方法找到的。在执行了一次doGuidedTask之后,可以调用saveKeyPara将它们保存到文件中,供后续应用程序运行时读入。

我可以使用静态初始化 block :测试文件是否存在,如果存在则加载关键参数。不确定这是否被允许,因为它需要使用 calcOtherPara 方法来确定其他参数,即它在初始化中使用类方法。即使是 keyPara 中的读取也最好作为一种方法实现(着眼于代码的 future 开发)。如果我在构造函数中使用相同的方法,则会出现同样的问题 - 我在论坛的其他地方读到不建议在构造函数中使用方法(不确定我是否理解为什么)。

我阅读了有关静态变量的教程,但我确实不清楚何时需要定义它们以及在这种情况下我应该做什么。如有任何建议,我们将不胜感激。

最佳答案

public class Master {
static boolean initialised=false;
static int[] keyPara;
static int[] otherPara;

public void doTask() {
if (!initialised)
{
boolean filefound=false;
// put here code to check if your saved file exists
if(filefound)
{
loadkeyfile();
calcOtherPara();
initialised=true;
doAutomatedTask();
} else {
doGuidedTask();
saveKeyPara();
calcOtherPara();
initialised=true;
}
} else {
doAutomatedTask();
}
}
private void doAutomatedTask() {
// put your non-interactive version here
}
}

关于java - 初始化静态类成员 - 请澄清一下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25083769/

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