0

我正在将一些 Objective C 代码移植到 Java。其中一种 C 方法如下所示:

void method(){

static int variable;

...

}

我对此的理解是,变量的生命周期等于包含编译单元的执行生命周期,但仅对方法可见。AFAIK,在 Java 中没有等价物,所以我正在考虑使用类级别的静态变量来完成这项工作。我理解扩大变量的可见性和由此导致的可维护性降低的风险,但是如果我仔细检查类的所有其他方法是否存在冲突,我可以通过明智的评论来处理它。

我错过了什么吗?我应该考虑其他任何风险吗?

感谢大家对 SO 的贡献。

干杯

西蒙

4

1 回答 1

1

我错过了什么吗?我应该考虑其他任何风险吗?

您应该真正考虑逻辑上属于哪个状态。它实际上是包含类的实例状态的一部分吗?如果是这样,请将其设为实例变量。它是类型本身的逻辑状态吗?如果是这样,静态变量是合理的——但静态变量通常是可测试性、线程等的敌人。

它实际上在逻辑上是不同类状态的一部分吗?可能是一个还不存在的新的?例如,您可能希望对该新类的实例具有静态最终引用。

基本上,让状态的自然位置告知变量的位置。

于 2012-08-22T18:55:39.807 回答