2024-09-21 08:00:04

Java中的全局变量

如何在Java中定义全局变量?


当前回答

一般来说,Java没有任何全局变量。除局部变量外,所有变量都属于程序中定义的任何类的作用域。 我们可以用静态变量来表示全局变量的作用域。

其他回答

要定义全局变量,可以使用静态关键字

public final class Tools {
  public static int a;
  public static int b;
}

现在您可以通过调用从任何地方访问a和b

Tools.a;
Tools.b;

你说得对……特别是在J2ME中… 可以通过将NullPointerException放入MidLet构造函数中来避免 (程序初始化)这行代码:

new Tools();

这确保了Tools将在任何指令之前分配 它使用了它。

就是这样!

在Java中没有全局变量,但是有带有公共字段的全局类。您可以使用java 5的静态导入特性使其看起来几乎像全局变量。

为了允许对另一个类的静态成员进行非限定访问,你也可以执行静态导入:

import static my.package.GlobalConstants;

现在,不是打印(GlobalConstants.MY_PASSWORD); 你可以直接使用常量:print(MY_PASSWORD)

“import”后面的“static”修饰符是什么意思?决定。

考虑Evan Lévesque关于承载常量的接口的回答。

在构建面向对象编程时,要理解变量的作用域与封装这些变量的类对象紧密地独占。

创建“全局变量”的问题在于,它不是Java的行业标准。它不是行业标准,因为它允许多个类异步操作数据,如果您正在运行一个多线程应用程序,从线程安全的角度来看,这将变得更加复杂和危险。使用全局变量无效还有其他各种原因,但如果您想避免这种情况,我建议您采用面向方面编程。

面向方面编程解决了这个问题,它让父类通过所谓的“建议”来负责作用域,它在代码中添加了额外的行为,而不需要实际修改它。它为横切关注点或全局变量的使用提供解决方案。

Spring是一个利用AOP的Java框架,虽然它传统上用于web应用程序,但核心应用程序可以在整个Java框架(包括8.0)中普遍使用。这可能是你想要进一步探索的方向。

public class GlobalImpl {   

 public static int global = 5;

}

你可以在任何地方打电话:

GlobalImpl.global // 5