Java相当于Objective C方法的作用域静态变量

时间:2012-08-22 18:51:07

标签: java objective-c

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

void method(){

static int variable;

...

}

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

我错过了什么吗?还有其他我应该考虑的风险吗?

感谢您对SO的贡献。

干杯

西蒙

1 个答案:

答案 0 :(得分:1)

  

我错过了什么吗?还有其他我应该考虑的风险吗?

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

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

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