2

他のクラスからアクセスできるブール変数を実行時に設定する必要があります (変数をクラス間で渡す必要はありません)。この変数は構成設定であり、実行時にユーザーが設定した値に依存します。

私はシングルトンが進むべき道だと思っていますが、午前中に読んでみると、それらを実際に使用する方法について言及することなく、それらを作成するための最良の方法に関する多くの例 (および引数) を見つけたようです。

これを解決する方法はシングルトンですか?

もしそうなら、他のクラスから静的にアクセスできるブール値セットを持つことができるシングルトンの例を誰でも提供できますか?

編集:私はとてもばかです(問題を完全に複雑にし、最も簡単な解決策を欠いています)。

public static volatile boolean yourBoolean;完璧に機能するようです

4

3 に答える 3

12

ブール値だけが必要な場合は、シングルトンを使用する必要はありません。宣言するだけです:

public static volatile boolean yourBoolean;

(マルチスレッド環境にいる場合は、行われたすべての変更がスレッド間で表示されるようにするためのvolatileキーワードを使用)。

于 2012-10-12T12:12:30.937 に答える
2

実行時に変更されない構成設定が変数に含まれる場合は、変数を使用することをお勧めしますfinal static。以下の例を参照してください。

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

次のリファレンスを使用して、この定数にアクセスできます。

Main.CONFIGURATION_SETTING

Main クラスをインポートする限り、ソリューション全体で使用できます。

于 2012-10-12T12:13:52.143 に答える
1

ここで必要なのはシングルトンであるとは限りません。質問自体にあるように、必要なのは他のクラスからアクセスできる変数だけです。

あなたは何も渡したくないので、それはそうでなければなりませんstatic-そしてもちろんpublic、他のクラスがそれを見ることができるようにする必要があります。

したがって、これを実現する最も簡単な方法は、次のようになります。

public class Config {
    public static boolean flag;
}

その後、どのクラスも値をとして読み取ることができますConfig.flag

アプリケーションに複数のスレッドがある場合は、スレッドセーフについて考える必要があります。単純な単一のブール値の場合は、フィールドをとしてマークするだけですvolatile。ただし、もう少し複雑なことをしている場合、または一度に複数の値を更新している場合は、これらの更新がアトミックであり、適切な方法で他のスレッドに表示されることを確認する必要があります。

于 2012-10-12T12:13:04.370 に答える