为什么静态变量不好?

时间:2014-03-19 05:16:59

标签: java static

我听到了很多不同的意见,并没有真正找到这个问题的可靠答案。什么时候/为什么静态变量不好?

如果我想在List中的游戏中存储玩家的名字,那么将其设置为非静态而不是静态会更好吗?如果是这样,为什么?

每次玩家离开/加入时,列表都会更新。它将用于向其他正在比赛的球员展示并跟踪他们的比赛时间。

2 个答案:

答案 0 :(得分:4)

静态变量不一定是,但软件设计的一个主要原则是您应该包含需要了解它的最小上下文的信息。如果一个变量在一个类的所有实例之间共享真的有意义 - 记录器对象是一个常见的例子 - 那么将它设置为静态就好了。如果拥有多个版本或副本是有意义的,就像在游戏玩家的情况下一样(想想多个游戏同时运行),那么最好将列表放在尽可能小的位置(非 - 静态)。

答案 1 :(得分:-1)

静态变量使得将数据视为函数的输入/输出变得更加困难,因为任何函数都可以访问静态。当您获得数千或数万行代码时,它就成了一个问题。在您的第一个小应用程序中没有那么多。

“泄漏内存”也更容易,因为静态的生命与程序相同,这意味着在程序关闭之前它永远不会被垃圾收集,或者它被代码清空。