最佳实践:Java 静态非最终变量
在Java中,什么时候应该使用静态非最终变量?
例如
private static int MY_VAR = 0;
显然,我们在这里不是在谈论常量。
public static final int MY_CONSTANT = 1;
根据我的经验,我经常在使用单例时证明它们是合理的,但是我最终需要有多个实例,并给自己带来极大的头痛和重构。
在实践中使用它们似乎很少见。你觉得怎么样?
在Java中,什么时候应该使用静态非最终变量?
例如
private static int MY_VAR = 0;
显然,我们在这里不是在谈论常量。
public static final int MY_CONSTANT = 1;
根据我的经验,我经常在使用单例时证明它们是合理的,但是我最终需要有多个实例,并给自己带来极大的头痛和重构。
在实践中使用它们似乎很少见。你觉得怎么样?
统计信息收集可能使用非最终变量,例如,计算创建的实例数。另一方面,对于这种情况,您可能无论如何都想使用等,此时它可以是最终的。或者,如果您要收集多个统计信息,则最终可能会得到一个类和对其实例的最终引用。AtomicLong
Statistics
当然,拥有(合理的)非最终静态变量是非常罕见的。
当用作缓存时,日志记录,统计信息或调试开关是明显的合理用途。当然,都是私人的。
如果将可变对象分配给最终字段,则在道德上与具有可变字段相同。
某些语言(如 Fan)完全不允许可变静态(或等效)。