3

現在、ResourceBundle を使用しているアプリのリソースを作成しています。問題は、リソースをディスパッチするための現在のコードでは、必要なたびにリソース バンドルのインスタンスを作成する必要があるということです。リソースを何度も何度もロードすることになるため、これは良い考えではないと推測できます。 .

2番目の解決策は、バンドルを多数に分割することですが、バンドルには2〜3個の文字列しかなく、15個のバンドルしかありません。

私の質問は次のとおり です。すべてのリソースを単一の静的クラスに単純にロードし、そこからアクセスする方法はありますか。

私はこの小さなコードを作成しましたが、私にとってはうまくいくようですが、その品質には疑問があります.

public class StaticBundle
{
    private final static ResourceBundle resBundle = 
        ResourceBundle.getBundle("com.resources");
    public final static String STRING_A = resBundle.getString("KEY_A");
    public final static String STRING_B = resBundle.getString("KEY_B");
    public final static String STRING_C = resBundle.getString("KEY_C");
}

これにより、プロジェクトのどこでも値を呼び出しStaticBundle.STRING_Aて取得できますが、バンドルはクラス自体と同時に初期化されるため...プログラムが適切なローカルをロードする時間がない可能性が非常に高いです.環境設定。

これを行う良い方法または他の可能な解決策はありますか?

ありがとうございました

4

2 に答える 2

0

シングルトン クラスを作成できます。

public class MyResouceBundle extends ResourceBundle {

    private static MyResourceBundle instance = new MyResouceBundle();

    // private constructor, no one can instantiate this class, only itself
    private MyResourceBundle() {

    }

    public ResourceBundle getInstance() {
        return instance;
    }
}

次に、全員がクラスの同じインスタンスにアクセスします (たとえば、KEY_A の文字列を取得するため):

MyResourceBunde.getInstance().get("KEY_A");
于 2013-07-31T18:11:11.830 に答える