SLa*_*aks 24

全局变量通常是一个设计缺陷.

您的组件应该是自包含的,不应该需要任何全局状态.
而是使用私有静态字段.

  • 有一些合法的情况需要一个,Java使用`static`提供它们 (3认同)

raz*_*ebe 9

答案是你的问题是,因为Java不支持全局变量,所以设计.Java的设计考虑了面向对象的原则,因此,Java中的每个变量都是本地变量或类的成员.

静态类成员是全局可访问的,这肯定是全局变量的一种可能定义,具体取决于您对该术语的解释.要迂腐,静态类成员可以通过类名访问,因此跨多个范围,它们仍然是类成员; 因此不是真正的全球变量.

Java缺乏对全局变量的支持是一件好事,因为使用全局变量是一种设计反模式.

  • @Ingo维基百科将"全球"定义为"在每个范围内都可访问".`out`只能在`System`的上下文中访问,所以它不是全局的,而`System`本身不是变量.Ergo`System.out`不是全局变量.维基百科也说Java [没有明确的全局]('http://en.wikipedia.org/wiki/Global_variable#Java:_no_explicit_globals).如果你在阅读时说了别的话,那就错了. (2认同)
  • @EJP 您引用的 wiki 页面的第二段列出了我们首先关心全局变量的原因。请注意这一切如何应用于公共静态类成员。Wiki 文章有点不足,因为它专注于“全局变量”(即名称),这只是描述全局状态的常用方法,但不是唯一的方法。 (2认同)