- 含まれているクラス:
ResourceBundle
ResourceBundle.Controlは、バンドル・ロード処理中にResourceBundle.getBundleファクトリによって呼び出される一連のコールバック・メソッドを定義します。 つまり、ResourceBundle.Controlは、リソース・バンドルのロード時にファクトリ・メソッドと連携して動作します。 コールバック・メソッドのデフォルト実装は、ファクトリ・メソッドがデフォルト動作を実行するために必要な情報を提供します。
ResourceBundle.Controlは、名前のないモジュールにデプロイされたアプリケーション用に設計されています。たとえば、非標準形式のリソース・バンドルをサポートしたり、非伝統的な規則でローカライズされたリソースをパッケージ化することができます。 ResourceBundleProviderは、モジュールに移行するときのResourceBundle.Controlの代わりです。 ResourceBundle.Controlパラメータを受け取るファクトリ・メソッドが呼び出されると、UnsupportedOperationExceptionがスローされます。
コールバック・メソッドの他に、toBundleNameおよびtoResourceNameメソッドが、主にコールバック・メソッドの実装を支援するために定義されています。 ただし、toBundleNameメソッドをオーバーライドすれば、ローカライズ済みリソースの構成やパッケージ化に関する異なる規約を提供できます。 toResourceNameメソッドがfinalになっているのは、リソース名やクラス名の区切り文字の誤用を回避するためです。
2つのファクトリ・メソッドgetControl(List)とgetNoFallbackControl(List)は、デフォルトのバンドル・ロード処理の一般的なバリエーションを実装したResourceBundle.Controlインスタンスを提供します。
getFormatsメソッドから返される形式とgetCandidateLocalesメソッドから返される候補ロケールは、同じ基底バンドルに対するすべてのResourceBundle.getBundle呼出しで一貫性のあるものでなければいけません。 そうでないと、ResourceBundle.getBundleメソッドが想定外のバンドルを返す可能性があります。 たとえば、ResourceBundle.getBundleの初回呼出し時にgetFormatsメソッドから"java.class"のみが返され、2回目の呼出し時に"java.properties"のみが返された場合、その2回目の呼出しでは、初回呼出し時にキャッシュに格納されたクラス・ベースのバンドルが返されます。
複数のスレッドが同時に使用するResourceBundle.Controlインスタンスは、スレッドセーフでなければいけません。 ResourceBundle.getBundleは、ResourceBundle.Controlのメソッドを呼び出す際に同期処理を行いません。 これらのメソッドのデフォルト実装はスレッドセーフです。
アプリケーションは、getControlファクトリ・メソッドから返されたResourceBundle.Controlインスタンスを指定することもできますし、ResourceBundle.Controlのサブクラスから作成されたインスタンスを指定してバンドル・ロード処理をカスタマイズすることもできます。 デフォルトのバンドル・ロード処理を変更する例を、次に示します。
プログラム例1
次のコードの場合、ResourceBundle.getBundleはプロパティ・ベースのリソースのみを検索します。
import java.util.*;
import static java.util.ResourceBundle.Control.*;
...
ResourceBundle bundle =
ResourceBundle.getBundle("MyResources", Locale.forLanguageTag("fr-CH"),
ResourceBundle.Control.getControl(FORMAT_PROPERTIES));
ResourceBundle.getBundleの説明の例でリソース・バンドルが与えられた場合、このResourceBundle.getBundle呼出しはMyResources_fr_CH.propertiesをロードします(親はMyResources_fr.properties、その親はMyResources.properties)。 (MyResources_fr_CH.propertiesは隠されないが、MyResources_fr_CH.classは隠される。)
プログラム例2
Properties.loadFromXMLを使ってXMLベースのバンドルをロードする例を、次に示します。
ResourceBundle rb = ResourceBundle.getBundle("Messages",
new ResourceBundle.Control() {
public List<String> getFormats(String baseName) {
if (baseName == null)
throw new NullPointerException();
return Arrays.asList("xml");
}
public ResourceBundle newBundle(String baseName,
Locale locale,
String format,
ClassLoader loader,
boolean reload)
throws IllegalAccessException,
InstantiationException,
IOException {
if (baseName == null || locale == null
|| format == null || loader == null)
throw new NullPointerException();
ResourceBundle bundle = null;
if (format.equals("xml")) {
String bundleName = toBundleName(baseName, locale);
String resourceName = toResourceName(bundleName, format);
InputStream stream = null;
if (reload) {
URL url = loader.getResource(resourceName);
if (url != null) {
URLConnection connection = url.openConnection();
if (connection != null) {
// Disable caches to get fresh data for
// reloading.
connection.setUseCaches(false);
stream = connection.getInputStream();
}
}
} else {
stream = loader.getResourceAsStream(resourceName);
}
if (stream != null) {
BufferedInputStream bis = new BufferedInputStream(stream);
bundle = new XMLResourceBundle(bis);
bis.close();
}
}
return bundle;
}
});
...
private static class XMLResourceBundle extends ResourceBundle {
private Properties props;
XMLResourceBundle(InputStream stream) throws IOException {
props = new Properties();
props.loadFromXML(stream);
}
protected Object handleGetObject(String key) {
return props.getProperty(key);
}
public Enumeration<String> getKeys() {
...
}
}
- APIのノート:
ResourceBundle.Controlは、指定されたモジュールではサポートされていません。 名前付きモジュールでResourceBundle.Controlを含むResourceBundle.getBundleメソッドが呼び出された場合、メソッドはUnsupportedOperationExceptionをスローします。ResourceBundleControlProviderのサービス・プロバイダは、指定されたモジュールでは無視されます。- 導入されたバージョン:
- 1.6
- 関連項目:
-
フィールドのサマリー
フィールド修飾子と型フィールド説明"java.class"を含む、クラスのみの形式のListです。デフォルト形式のListであり、文字列"java.class"と"java.properties"をこの順番で含みます。"java.properties"を含む、プロパティのみの形式のListです。static final longロードされたリソース・バンドル・インスタンスをキャッシュしないための有効期間定数。static final longキャッシュ内のロード済みリソース・バンドル・インスタンスの有効期限制御を無効にするための有効期間定数。 -
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明getCandidateLocales(String baseName, Locale locale) baseNameとlocaleの候補ロケールとして、LocaleのListを返します。static final ResourceBundle.ControlgetControl(List<String> formats) getFormatsメソッドが指定されたformatsを返す、ResourceBundle.Controlを返します。getFallbackLocale(String baseName, Locale locale) ResourceBundle.getBundleファクトリ・メソッドがリソース・バンドルをさらに検索する際のフォール・バック・ロケールとして使用されるLocaleを返します。getFormats(String baseName) 指定されたbaseNameのリソース・バンドルをロードする際に使用すべき形式が格納された、StringのListを返します。static final ResourceBundle.ControlgetNoFallbackControl(List<String> formats) getFormatsメソッドが指定されたformatsを返し、かつgetFallbackLocaleメソッドがnullを返す、ResourceBundle.Controlを返します。longgetTimeToLive(String baseName, Locale locale) このResourceBundle.Controlの下でロードされるリソース・バンドルの有効期間(TTL)値を返します。booleanneedsReload(String baseName, Locale locale, String format, ClassLoader loader, ResourceBundle bundle, long loadTime) キャッシュ内で有効期限の切れたbundleを再ロードする必要があるかどうかを、loadTimeに指定されたロード時刻やその他のいくつかの条件に基づいて判定します。newBundle(String baseName, Locale locale, String format, ClassLoader loader, boolean reload) 指定された形式とロケールを持つ指定されたバンドル名のリソース・バンドルを、指定されたクラス・ローダーを必要に応じて使用してインスタンス化します。toBundleName(String baseName, Locale locale) 指定されたbaseNameとlocaleをバンドル名に変換します。final StringtoResourceName(String bundleName, String suffix) 指定されたbundleNameをClassLoader.getResourceメソッドで必要とされる形式に変換するため、bundleName内のすべての'.'を'/'に置き換え、末尾に1つの'.'と指定されたファイルsuffixを追加します。
-
フィールド詳細
-
FORMAT_DEFAULT
デフォルト形式のListであり、文字列"java.class"と"java.properties"をこの順番で含みます。 このListは変更できません。- 関連項目:
-
FORMAT_CLASS
"java.class"を含む、クラスのみの形式のListです。 このListは変更できません。- 関連項目:
-
FORMAT_PROPERTIES
"java.properties"を含む、プロパティのみの形式のListです。 このListは変更できません。- 関連項目:
-
TTL_DONT_CACHE
public static final long TTL_DONT_CACHEロードされたリソース・バンドル・インスタンスをキャッシュしないための有効期間定数。- 関連項目:
-
TTL_NO_EXPIRATION_CONTROL
public static final long TTL_NO_EXPIRATION_CONTROLキャッシュ内のロード済みリソース・バンドル・インスタンスの有効期限制御を無効にするための有効期間定数。- 関連項目:
-
-
コンストラクタの詳細
-
Control
protected Control()唯一のコンストラクタです。 (サブクラスのコンストラクタによる呼出し用で、通常は暗黙的に呼び出されます。)
-
-
メソッドの詳細
-
getControl
public static final ResourceBundle.Control getControl(List<String> formats) getFormatsメソッドが指定されたformatsを返す、ResourceBundle.Controlを返します。formatsは、FORMAT_PROPERTIES、FORMAT_CLASS、またはFORMAT_DEFAULTのいずれかと等しくなる必要があります。 このメソッドによって返されるResourceBundle.Controlインスタンスは単独であり、スレッドセーフです。FORMAT_DEFAULTを指定することは、ResourceBundle.Controlクラスをインスタンス化することと等価です。ただし、このメソッドが単独オブジェクトを返す点だけは異なります。- パラメータ:
formats-ResourceBundle.Control.getFormatsメソッドによって返される形式- 戻り値:
- 指定された
formatsをサポートするResourceBundle.Control - スロー:
NullPointerException-formatsがnullである場合IllegalArgumentException-formatsが不明な場合
-
getNoFallbackControl
public static final ResourceBundle.Control getNoFallbackControl(List<String> formats) getFormatsメソッドが指定されたformatsを返し、かつgetFallbackLocaleメソッドがnullを返す、ResourceBundle.Controlを返します。formatsは、FORMAT_PROPERTIES、FORMAT_CLASS、またはFORMAT_DEFAULTのいずれかと等しくなる必要があります。 このメソッドによって返されるResourceBundle.Controlインスタンスは単独であり、スレッドセーフです。- パラメータ:
formats-ResourceBundle.Control.getFormatsメソッドによって返される形式- 戻り値:
- 指定された
formatsをサポートし、フォール・バックLocaleをサポートしないResourceBundle.Control - スロー:
NullPointerException-formatsがnullである場合IllegalArgumentException-formatsが不明な場合
-
getFormats
指定されたbaseNameのリソース・バンドルをロードする際に使用すべき形式が格納された、StringのListを返します。ResourceBundle.getBundleファクトリ・メソッドは、このリスト内の形式を持つリソース・バンドルを、リスト内に指定された順番でロードしようとします。 このメソッドから返されたリストには、少なくとも1つのStringが含まれていなければいけません。 定義済みの形式は、クラス・ベースのリソース・バンドル用の"java.class"と、プロパティ・ベースのリソース・バンドル用の"java.properties"です。"java."で始まる文字列は、将来の拡張用として予約されているため、アプリケーション定義形式では使用しないでください。不変の(変更不可能な)
Listを返す必要は、必ずしもありません。 ただし、ListがgetFormatsによって返されたあとで、それを変更してはいけません。デフォルト実装は
FORMAT_DEFAULTを返しますが、これは、ResourceBundle.getBundleファクトリ・メソッドがまずクラス・ベースのリソース・バンドルを検索し、次にプロパティ・ベースのバンドルを検索するようにするためです。- パラメータ:
baseName- リソース・バンドルの基底名。完全指定クラス名- 戻り値:
- リソース・バンドルをロードするための形式が格納された、
StringのList。 - スロー:
NullPointerException-baseNameがnullである場合- 関連項目:
-
getCandidateLocales
baseNameとlocaleの候補ロケールとして、LocaleのListを返します。 このメソッドは、ターゲットLocaleのリソース・バンドルの検索をResourceBundle.getBundleファクトリ・メソッドが試みるたびに、そのファクトリ・メソッドによって呼び出されます。候補ロケールに対応するリソース・バンドルが存在しており、それらのロード済みリソース・バンドル自体には親が定義されていない場合、候補ロケールのシーケンスは、実行時リソース検索パス(親連鎖とも呼ばれる)にも対応します。 基底バンドルを親連鎖の終端にする必要がある場合、このリストの最後の要素はルート・ロケールでなければいけません。
指定されたロケールが
Locale.ROOT(ルート・ロケール)に等しい場合、ルートのLocaleだけを含むListが返される必要があります。 この場合、ResourceBundle.getBundleファクトリ・メソッドは、結果として得られるリソース・バンドルとして基底バンドルだけをロードします。不変の(変更不可能な)
Listを返す必要は、必ずしもありません。 ただし、ListがgetCandidateLocalesによって返されたあとで、それを変更してはいけません。デフォルト実装は、後述のルールを使用して、
Localeを含むListを返します。 下記の説明で、L、S、C、およびVはそれぞれ、空でない言語、スクリプト、国、およびバリアントを表します。 たとえば、[L, C]は、言語と国だけに空でない値を持つLocaleを表します。 L("xx")という形式は、(空でない)言語の値が"xx"であることを表します。 どの場合でも、最終コンポーネントの値として空の文字列を持つLocaleは省略されます。- 入力
Localeのスクリプトの値が空の場合は、次のように最終コンポーネントを1つずつ省略して候補Localeを追加します。- [L, C, V]
- [L, C]
- [L]
-
Locale.ROOT
- 入力
Localeのスクリプトの値が空でない場合は、最終コンポーネントを言語まで省略して候補Localeを追加したあと、元の国とバリアントを使用してLocaleから生成した候補を追加します。- [L, S, C, V]
- [L, S, C]
- [L, S]
- [L, C, V]
- [L, C]
- [L]
-
Locale.ROOT
- 入力
Localeが、バリアント値が下線で区切られた複数のサブタグで構成される場合は、バリアント・サブタグを1つずつ省略することで候補Localeを生成してから、元のリスト内でフル・バリアント値を持つすべてのLocaleオカレンスのあとにそれらを挿入します。 たとえば、バリアントが2つのサブタグV1およびV2で構成されている場合:- [L, S, C, V1, V2]
- [L, S, C, V1]
- [L, S, C]
- [L, S]
- [L, C, V1, V2]
- [L, C, V1]
- [L, C]
- [L]
-
Locale.ROOT
- 中国語には特例があります。 入力
Localeロケールの言語が「zh」(中国語)で、スクリプトの値が空の場合は、国に応じて「Hans」(簡体字)または「Hant」(繁体字)が指定されます。 国が「CN」(中国)または「SG」(シンガポール)の場合は、「Hans」が指定されます。 国が「HK」(香港特別行政区、中国)、「MO」(マカオ特別行政区、中国)、または「TW」(台湾)の場合は、「Hant」が指定されます。 その他の国では、国が空の場合、スクリプトは指定されません。 たとえば、Locale("zh", "CN")の場合、候補リストは次のようになります。- [L("zh"), S("Hans"), C("CN")]
- [L("zh"), S("Hans")]
- [L("zh"), C("CN")]
- [L("zh")]
-
Locale.ROOT
Locale("zh", "TW")の場合、候補リストは次のようになります。- [L("zh"), S("Hant"), C("TW")]
- [L("zh"), S("Hant")]
- [L("zh"), C("TW")]
- [L("zh")]
-
Locale.ROOT
- ノルウェー語には特例があります。
Locale("no", "NO", "NY")とLocale("nn", "NO")はどちらもノルウェー語ニーノシクを表します。 ロケールの言語が「nn」の場合、標準の候補リストは[L("nn")]まで生成されたあと、次の候補が追加されます。- [L("no"), C("NO"), V("NY")]
- [L("no"), C("NO")]
- [L("no")]
-
Locale.ROOT
Locale("no", "NO", "NY")の場合は、まずLocale("nn", "NO")に変換されたあと、上記の処理が行われます。また、Javaは言語「no」をノルウェー語ブークモール「nb」の同義語として扱います。 この
Locale("no", "NO", "NY")(上記のように処理される)以外は、入力Localeの言語が「no」または「nb」の場合、言語コード「no」と「nb」を持つ候補Localeが交互に追加されます。まず要求された言語、次にその同義語が使用されます。 たとえば、Locale("nb", "NO", "POSIX")では、次の候補リストが生成されます。- [L("nb"), C("NO"), V("POSIX")]
- [L("no"), C("NO"), V("POSIX")]
- [L("nb"), C("NO")]
- [L("no"), C("NO")]
- [L("nb")]
- [L("no")]
-
Locale.ROOT
Locale("no", "NO", "POSIX")でも同じリストが生成されますが、「no」を持つロケールが「nb」を持つロケールより前に出現する点が異なります。
デフォルト実装は
ArrayListを使用しますが、これは、オーバーライドした実装内で、呼出し元に返す前に変更することができます。 ただし、getCandidateLocalesから返されたあとでサブクラス内で変更してはいけません。たとえば、指定された
baseNameが「Messages」であり、指定されたlocaleがLocale("ja", "", "XX")であった場合、LocaleのList:Locale("ja", "", "XX") Locale("ja") Locale.ROOTが返されます。 そして、「ja」と「」のLocaleに対するリソース・バンドルが見つかった場合、実行時リソース検索パス(親連鎖)は次のようになります。Messages_ja -> Messages- パラメータ:
baseName- リソース・バンドルの基底名。完全指定クラス名locale- リソース・バンドルが必要なロケール- 戻り値:
- 指定された
localeに対する候補LocaleのList - スロー:
NullPointerException-baseNameまたはlocaleがnullである場合
- 入力
-
getFallbackLocale
ResourceBundle.getBundleファクトリ・メソッドがリソース・バンドルをさらに検索する際のフォール・バック・ロケールとして使用されるLocaleを返します。 このメソッドは、baseNameとlocaleに対応する結果リソース・バンドルが1つも見つからない状況が発生するたびに、ファクトリ・メソッドによって呼び出されます。ここで、そのロケールは、ResourceBundle.getBundleのパラメータ、このメソッドから以前に返されたフォール・バック・ロケールのいずれかになります。このメソッドは、さらなるフォール・バック検索が必要ない場合に
nullを返します。デフォルト実装は、指定された
localeがデフォルトのロケールではない場合にデフォルトのLocaleを返します。 それ以外の場合はnullが返されます。- パラメータ:
baseName- リソース・バンドルの基底名。完全指定クラス名。ResourceBundle.getBundleはこの基底名に対して、基底バンドル以外のリソース・バンドルを1つも見つけられなかったlocale-Locale。ResourceBundle.getBundleはこのロケールに対して、基底バンドル以外のリソース・バンドルを1つも見つけられなかった- 戻り値:
- フォール・バック検索用の
Locale。さらなるフォール・バック検索が必要ない場合はnull。 - スロー:
NullPointerException-baseNameまたはlocaleがnullである場合
-
newBundle
public ResourceBundle newBundle(String baseName, Locale locale, String format, ClassLoader loader, boolean reload) throws IllegalAccessException, InstantiationException, IOException 指定された形式とロケールを持つ指定されたバンドル名のリソース・バンドルを、指定されたクラス・ローダーを必要に応じて使用してインスタンス化します。 指定されたパラメータに対応する使用可能なリソース・バンドルが存在しない場合、このメソッドはnullを返します。 予想外のエラーが発生したためにリソース・バンドルのインスタンス化が行えない場合には、単純にnullを返す代わりに、ErrorまたはExceptionをスローすることでエラーを報告する必要があります。reloadフラグがtrueの場合、それは、以前にロードされたリソース・バンドルの有効期限が切れたためにこのメソッドが呼び出されたことを示します。- 実装要件:
- 名前付きモジュールのリソース・バンドルは、
Module.getResourceAsStreamで指定されたカプセル化ルールの影響を受けます。 指定されたクラス・ローダーに表示される名前付きモジュール内のリソース・バンドルは、リソース・バンドルに対応するリソース・ファイルのパッケージが無条件にオープンされている場合にアクセスできます。デフォルト実装による
ResourceBundleのインスタンス化手順は、次のとおりです。toBundleName(baseName, locale)を呼び出すことでバンドル名が取得される。formatが"java.class"の場合、バンドル名で指定されたClassが、指定されたクラス・ローダーとともにロードされます。Classが見つかり、アクセスできる場合は、ResourceBundleがインスタンス化されます。 リソース・バンドルは、バンドル・クラス・ファイルのパッケージが無条件にオープンされている場合にアクセスできます。そうでない場合、IllegalAccessExceptionがスローされます。 なお、このデフォルト実装では、クラス・ベースのリソース・バンドルをロードする際にはreloadフラグが無視される。formatが"java.properties"の場合、toResourceName(bundlename, "properties")を呼び出すことでリソース名が取得される。reloadがtrueの場合、load.getResourceを呼び出すことで、URLConnectionを作成するためのURLが取得される。 このURLConnectionを使って、基盤となるリソース・ロード処理層のキャッシュの無効化と、InputStreamの取得が行われる。 それ以外の場合は、loader.getResourceAsStreamを呼び出すことでInputStreamが取得される。 次に、そのInputStreamを使ってPropertyResourceBundleが構築される。formatが"java.class"でも"java.properties"でもない場合は、IllegalArgumentExceptionがスローされる。localeの言語が「レガシー言語コード」(古い言語または新しい言語)の1つである場合は、必要に応じてロード・プロセスを繰り返し、バンドル名と他の言語を使用します。 たとえば、"he"の場合は"iw"、その逆です。
- パラメータ:
baseName- リソース・バンドルの基底バンドル名。完全指定クラス名locale- リソース・バンドルのインスタンス化対象となるロケールformat- ロードされるリソース・バンドルの形式loader- バンドルをロードするために使用するClassLoaderreload- バンドルの再ロードを示すフラグ。有効期限の切れたリソース・バンドルを再ロードする場合はtrue、それ以外の場合はfalse- 戻り値:
- リソース・バンドル・インスタンス。インスタンスが見つからなかった場合は
null。 - スロー:
NullPointerException-bundleName、locale、format、またはloaderがnullの場合、またはtoBundleNameからnullが返された場合IllegalArgumentException-formatが不明である場合、または指定されたパラメータに対して見つかったリソースに不正なデータが含まれている場合。ClassCastException- ロードされたクラスをResourceBundleにキャストできない場合IllegalAccessException- クラスまたはその引数なしのコンストラクタにアクセスできない場合。InstantiationException-クラスのインスタンス化が何かほかの理由で失敗する場合。ExceptionInInitializerError- このメソッドによる初期化に失敗した場合。SecurityException- セキュリティ・マネージャが存在し、新しいインスタンスの作成が拒否された場合。 詳細は、Class.newInstance()を参照してください。IOException- 何らかの入出力操作を使ってリソースを読み取る際にエラーが発生した場合- 関連項目:
-
getTimeToLive
このResourceBundle.Controlの下でロードされるリソース・バンドルの有効期間(TTL)値を返します。 正の有効期間値は、バンドルがその構築元となるソース・データに基づいて検証されずにキャスト内にとどまることのできるミリ秒数を表します。 値0は、バンドルがキャッシュから取得されるたびに検証される必要があることを示します。TTL_DONT_CACHEは、ロードされたリソース・バンドルがキャッシュに格納されないことを表します。TTL_NO_EXPIRATION_CONTROLは、ロードされたリソース・バンドルが有効期限制御なしでキャッシュに格納されることを表します。この有効期限の影響を受けるのは、
ResourceBundle.getBundleファクトリ・メソッドによるバンドル・ロード処理だけです。 つまり、ファクトリ・メソッドは、キャッシュ内で有効期限の切れたリソース・バンドルを検出すると、needsReloadメソッドを呼び出し、そのリソース・バンドルを再ロードする必要があるかどうかを判定します。needsReloadがtrueを返した場合、そのキャッシュ内のリソース・バンドル・インスタンスがキャッシュから削除されます。 それ以外の場合、そのインスタンスはキャッシュ内にとどまり、このメソッドから返された新しいTTL値で更新されます。キャッシュ内のリソース・バンドルはすべて、実行環境のメモリー制限による、キャッシュからの削除対象となります。 大きな正の値が返されても、それは、ロードされたリソース・バンドルがキャッシュ内でロックされることを意味するわけではありません。
デフォルトの実装では
TTL_NO_EXPIRATION_CONTROLを返します。- パラメータ:
baseName- 有効期限値が指定されているリソース・バンドルの基底名。locale- 有効期限値が指定されているリソース・バンドルのロケール。- 戻り値:
- キャッシュ内のロード済みバンドルに有効期限を設ける場合はその時間(0またはキャッシュ格納時刻からの正のミリ秒オフセット)、有効期限制御を無効にする場合は
TTL_NO_EXPIRATION_CONTROL、キャッシュを無効にする場合はTTL_DONT_CACHE。 - スロー:
NullPointerException-baseNameまたはlocaleがnullである場合
-
needsReload
public boolean needsReload(String baseName, Locale locale, String format, ClassLoader loader, ResourceBundle bundle, long loadTime) キャッシュ内で有効期限の切れたbundleを再ロードする必要があるかどうかを、loadTimeに指定されたロード時間やその他のいくつかの条件に基づいて判定します。 このメソッドは、再ロードが必要な場合はtrueを返し、それ以外の場合はfalseを返します。loadTimeは、Calendarエポックからのミリ秒オフセットです。ResourceBundle.getBundleファクトリ・メソッドの呼出しは、最初にリソース・バンドルをロードした呼出しで使用されるインスタンスではなく、現在の呼出しに使用されるResourceBundle.Controlインスタンスでこのメソッドを呼び出します。デフォルト実装は、リソース・バンドルの
loadTimeと、そのソース・データが最後に変更された時刻とを比較します。loadTime以降にソース・データが変更されたことが判明した場合には、trueが返されます。 それ以外の場合はfalseが返されます。 この実装は、指定されたformatがデフォルトの形式"java.class"、"java.properties"のいずれでもない場合、その形式がファイル接尾辞と同じ文字列であると仮定します。- パラメータ:
baseName- リソース・バンドルの基底バンドル名。完全指定クラス名locale- リソース・バンドルのインスタンス化対象となるロケールformat- ロードされるリソース・バンドルの形式loader- バンドルをロードするために使用するClassLoaderbundle- キャッシュ内で有効期限の切れたリソース・バンドル・インスタンスloadTime-bundleがロードされ、キャッシュ内に格納された時刻- 戻り値:
- 有効期限の切れたバンドルを再ロードする必要がある場合は
true、それ以外の場合はfalse。 - スロー:
NullPointerException-baseName、locale、format、loader、またはbundleがnullの場合
-
toBundleName
指定されたbaseNameとlocaleをバンドル名に変換します。 このメソッドは、newBundleおよびneedsReloadメソッドのデフォルト実装から呼び出されます。この実装は次の値を返します。
baseName + "_" + language + "_" + script + "_" + country + "_" + variantここで、language、script、country、およびvariantはそれぞれ、localeの言語、スクリプト、国、およびバリアントの値です。 最後の要素の値が空のStringである場合、その値と直前の「_」は省略されます。 スクリプトが空の場合、スクリプト値は直前の「_」と一緒に省略されます。 すべての値が空の文字列である場合には、baseNameが返されます。たとえば、
baseNameが"baseName"、localeがLocale("ja", "", "XX")の場合は、"baseName_ja_ _XX"が返されます。 指定されたロケールがLocale("en")の場合は、"baseName_en"が返されます。このメソッドをオーバーライドすれば、ローカライズ済みリソースの構成やパッケージ化に関する異なる規約をアプリケーションで使用できます。
- パラメータ:
baseName- リソース・バンドルの基底名。完全指定クラス名locale- リソース・バンドルのロード対象となるロケール- 戻り値:
- リソース・バンドルのバンドル名
- スロー:
NullPointerException-baseNameまたはlocaleがnullである場合- 関連項目:
-
toResourceName
指定されたbundleNameをClassLoader.getResourceメソッドで必要とされる形式に変換するため、bundleName内のすべての'.'を'/'に置き換え、末尾に1つの'.'と指定されたファイルsuffixを追加します。 たとえば、bundleNameが"foo.bar.MyResources_ja_JP"、suffixが"properties"の場合は、"foo/bar/MyResources_ja_JP.properties"が返されます。- パラメータ:
bundleName- バンドル名suffix- ファイル・タイプ接尾辞- 戻り値:
- 変換後のリソース名
- スロー:
NullPointerException-bundleNameまたはsuffixがnullである場合
-