如何在Java中创建一个“全局变量”,以便所有类都可以访问它?

这是我的问题:我有多个类属于同一个包,他们需要访问某个文件路径

String filePath = "D:/Users/Mine/School/Java/CZ2002_Assignment/src/" 

不是在每个类中声明相同的Filepath,而是可以简单地使用此FilePath的“全局”类型的变量,以便所有类都可以访问它,我只需要声明和更新一次。

谢谢

如果你声明它

 public class TestClass { public static String filePath="D:/Users/Mine/School/Java/CZ2002_Assignment/src/"; } 

它将作为TestClass.filePath随处访问

这可能很有用(并且你的用例很有意义),但是公共静态变量是一把双刃剑,不应该过度使用以便能够访问从任何地方变化的东西,因为它们可以打破封装并使你的程序不那么清晰。

如果字符串永远不会被更改为annother,您可以添加关键字final ,这将强制执行这种永不改变的行为,并允许JVM进行额外的效率增强(您不必担心)

 public class Test { public static final String FILE_PATH = "D:/Users/Mine/School/Java/CZ2002_Assignment/src/"; } 

这样称呼它: Test.FILE_PATH

注意final因为你只想声明一次。

还有一个代码约定将最终常量命名为全部大写,组件用下划线“_”字符分隔。 最后,这可能是一个偏好问题。

final一个词 – 如果字符串字段是一个常量变量 ,它的值可能会在许多引用它的类中重复。 我们可能想避免这种情况,因为1)字符串太大了。 2)如果字符串被更改,我们必须重新编译引用它的所有类。

我们可以避免它

 public static final String filePath; static{ filePath="D:/Users/Mine/School/Java/CZ2002_Assignment/src/"; } 

见http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.12.4

原始类型或类型String的变量是final,并使用编译时常量表达式(第15.28节)初始化,称为常量变量。

 public class One { public final static String FILEPATH = "D:/Users/Mine/School/Java/CZ2002_Assignment/src/"; }//class one public class Two { public static void main(String[] args) { //sample operation to access the filePath value System.out.println(One.FILEPATH); }//main }//class Two 

注意:

1)最好使用配置文件/属性文件 – 这样您就可以在不重新编译的情况下更改路径。
2)避免使用静态变量! (几乎总是) http://www.offthehill.org/articles/2011/06/03/java-static-variables-are-wrong-almost-always/