gpt4 book ai didi

java - 定义行为(某种)类似于 C 的局部静态变量的 Java 变量的最佳实践

转载 作者:搜寻专家 更新时间:2023-10-31 19:34:37 26 4
gpt4 key购买 nike

在 C 中,我可以在函数中创建静态变量。该变量的空间不与函数变量一起分配,它是在程序启动时分配的。 (不要太严厉地 mock 我的 C,我用 Java 编程太久了:)

void myFunc(){
static SomeStruct someStruct;
someStruct.state=INITIALIZED;
goDoSomethingInteresting(MY_COMMAND,&someStruct);
}

在 Java 中,如果我想做类似的事情,我创建一个类变量然后使用它。

Class TheClass {
SomeStruct someStruct = new SomeStruct();
void myFunc(){
someStruct.setState(INITIALIZED);
goDoSomethingInteresting(MY_COMMAND,someStruct);
}
}

我的问题是,执行此类操作的最佳做​​法是什么?我真的很想关联我的变量 someStruct用我的函数 myFunc ,因为 myFunc是唯一应该知道或使用 someStruct 的代码,但是除了在代码中将变量放在函数附近之外,没有办法建立这种关联。如果你把它放在上面,那么这个函数的 Javadoc 看起来很奇怪,如果你把它放在下面,那么就不太清楚它们是否属于一起。

通常我会创建 someStruct在本地,但就我而言,创建 someStruct 非常昂贵, 我调用 myFunc在一个紧密的循环中。

最佳答案

一个小类会将 someStructmyFunc 的行为干净利索地关联起来,但这是理解和维护事物的额外开销。可能值得,也可能不值得。

class TheClass {
MyFuncBehavior myFuncer = new MyFuncBehavior();
void myFunc() {
myFuncer.myFunc();
}
}

class MyFuncBehavior {
private static SomeStruct someStruct = new SomeStruct();

public void myFunc() {
someStruct.setState(INITIALIZED);
goDoSomethingInteresting(MY_COMMAND,someStruct);
}
}

关于java - 定义行为(某种)类似于 C 的局部静态变量的 Java 变量的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10198516/

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