どのロケールをJavaのすべてのクラスで使用するかを共有するには?

ソフトウェアを国際化する必要があると判断したので、使用するロケールをユーザーに促すクラスを作成しました。他の7つのクラスには、この情報を取り込むためのパラメータを追加しました。いまのところ、何とかこれは正しく感じられません。物事が複雑になっているようです。

この7つのクラスすべてにパラメータを追加するのではなく、選択したロケールを 'グローバル変数'にするのはもっと自然なことです。(同意しますか?)

So I took a look at what's suggested: to define a public class with the desired variables as static members of it.(for example here)

ただし、この例では、すべてのクラス間で共有される値はユーザー入力とは関係ありません。私は、まだ設定されていない変数をどのように共有するかという手がかりを持っていません。私のためにこれについて少しの言葉を過ごしたい人はいますか?

1

2 答え

GlobalSettingsクラスを作成したいとしましょう。あなたは以下を行うことができます。

class GlobalSettings {
  private static Locale locale = Locale.US;

  public static Locale getLocale() {
    return locale;
  }

  public static void setLocale(Locale newValue) {
    locale = newValue;
  }
}

どこからでも、GlobalSettings.getLocale()を呼び出すことができます。例えば、プライベートフィールドロケールを持つGlobalSettingsの単一のインスタンスを持つなど、より洗練されたものにすることができます。単体テストのために簡単に模擬または置き換えることができます。

2
追加された
私はまだグローバル変数の使用を最小限にしようとしています。ロケールの大文字小文字は、ほとんどの場合にのみ読み込まれるため、おそらく合理的な使用例の1つです。実際には、複数のクラスに挿入することは、ビジネスロジックではなくUIクラスでのみ必要なので、悪い解決策ではないかもしれません。
追加された 著者 Luis,
Thx、私はすぐにこれに戻って、私が探している解決策のように見えます。
追加された 著者 FMolivierH,
ルイス、あなたは私をとても幸せな人にしました!初心者であるため、クラスを作成してインスタンスを作成せずに使用できることはわかりませんでした。私は今すぐ頭の最初の書籍にすぐに戻って!再度、感謝します!ところで、これは、このようなグローバル変数を定義することが悪いことではない場合、またはこれは依然として悪い習慣とみなされるでしょうか?
追加された 著者 FMolivierH,

そのWebアプリケーションの場合は、ロケールをHTTPセッションに入れることができます。

JSFまたはポートレットを使用している場合は、ロケールのサポートが組み込まれています。

0
追加された
これはEclipseのJavaプロジェクトで、.jarとして配布されます
追加された 著者 FMolivierH,