为什么Java中没有全局变量?

为什么Java中没有全局变量?

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

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

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

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

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

实际上与全局变量有一定的相似性 – 您可以使用系统属性,将它们设置在一个类中并在另一个类中读取它们。 对于相当复杂的企业环境,这实际上很常见。 例如,JBoss通常提供定义和访问系统属性的机制。

如果它是您正在使用的Web应用程序,那么您可以将会话变量用作全局变量….这将在Web应用程序的所有页面中可用…

我们可以使用static classe来保存Global / Application变量Eg

 //Global Class public class GlobalClass { public static String globalVariable = "globalValue"; } //Main Method public static void main(String args[]){ System.out.println("globalVariable:"+GlobalClass.globalVariable); GlobalClass.globalVariable = "newglobalValue"; System.out.println("globalVariable:"+GlobalClass.globalVariable); } 

理性的原因是全局变量通常是一个坏主意,因此将它们排除在语言之外没有任何缺点。

然后有一个实际的语法原因 :Java中的所有内容都需要根据语法在类的范围内定义。 因此,在没有更改Java的范围规则的情况下,您可以放置​​命名变量并不存在任何“全局”。 可以说,Java在语法中允许的最接近的东西是类的“公共静态”成员,它可以在很多方面像全局变量一样使用。

最后有一个经常被遗忘的简单原则 ,有许多伪装:“如果有疑问就把它留下来”。 或者“保持简单,愚蠢”。 或者YAGNI 。 在语言设计中,通常在function方面越少越好。 总而言之,Java设计得非常好,并且从这个角度经受住了时间的考验。