java程序中的变量可用(单例)

时间:2012-10-12 12:09:48

标签: java

我需要在运行时设置一个布尔变量,可以被任何其他类访问(不必将变量从类传递给类)。此变量将是配置设置,并将取决于用户在运行时设置的某些值。

我怀疑单身是可行的方式,但是早上花了很多时间阅读它,我似乎找到了很多关于创建它们的最佳方法的例子(& arguments),而没有提到如何实际上使用它们。

单身是解决这个问题的方法吗?

如果是这样,任何人都可以提供一个单例的例子,它可以设置一个布尔值,可以从任何其他类中静态访问吗?

编辑:我是个白痴(完全过于复杂的问题,并且错过了最简单的解决方案)。

public static volatile boolean yourBoolean;看起来它会完美运作

3 个答案:

答案 0 :(得分:12)

如果您只需要一个布尔值,则无需使用单例。只需声明一个:

public static volatile boolean yourBoolean;

(如果您处于多线程环境中,使用volatile关键字确保所有更改在线程中可见。)

答案 1 :(得分:2)

如果变量在运行时包含一个不会改变的配置设置 ,我建议您使用final static变量。请参阅以下示例:

public class Main {
    public final static String CONFIGURATION_SETTING = "some_setting";
}

您可以使用以下参考来访问此常量:

Main.CONFIGURATION_SETTING

只要您导入Main类,它就可以在整个解决方案中使用。

答案 2 :(得分:1)

我认为单身人士不一定是你需要的 - 正如你的问题本身所说,你需要的只是一个可以被任何其他类访问的变量。

由于您不想传递任何内容,因此它必须是static - 当然它必须是public才能让其他类看到它。

因此,实现这一目标的最简单方法如下:

public class Config {
    public static boolean flag;
}

然后,任何类都可以将值读为Config.flag

如果您的应用程序中有多个线程,则需要考虑线程安全性。对于简单的单个布尔值,您只需将该字段标记为volatile即可。但是如果你正在做一些更复杂的事情,或者一次更新几个值,你需要确保这些更新是原子的,并以适当的方式对其他线程可见。