在java中为整个代码实现全局变量的最佳方法是什么?

时间:2016-02-28 07:49:39

标签: java-8

我需要在Java中创建几个变量。我的要求如下。

  
      
  1. 变量应该在项目初始化时初始化。但是,变量应该有一个默认值(如果一个变量没有初始化应该包含默认值)。

  2.   
  3. 需要通过代码访问变量。

  4.   

我需要在Java 8中使用正确的方法。

2 个答案:

答案 0 :(得分:3)

如果您创建一个包含public static成员的Resources类,则可以通过引用它们来访问它们,例如Resources.myGlobalData,导入该类的任何位置。

所以,(未经测试但应该准确)

public class Resources {
    public static int count = 1; // default initialization to 1
}
public class Main {
    public static void main(String[] args) {
        Resources.count++;
        System.out.println(Resources.count); // prints 2
    }
}

但是,我建议你重新考虑你的设计,因为只要你有可变的全局状态,当全局状态(或者没有)改变时,你就会要求提出错误。

如果您确实想要生成类似C风格的#DEFINE预处理器宏的编译时常量,则可以使用public static final个字段。这些不会带来全局状态的问题,因为final关键字使它们不可变。 (大多数编译器会在编译时内联该值,就像用{C>样语言实现#DEFINE一样。)

答案 1 :(得分:1)

我假设变量应该具有原始类型?并且实际上有所不同(即,您不是在寻找常数)?如果您正在使用Spring,那么您可以将变量作为bean类的成员变量,然后将该bean自动装配到您想要访问它的任何类中。