- 含まれているクラス:
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.Control
getControl
(List<String> formats) getFormats
メソッドが指定されたformats
を返す、ResourceBundle.Control
を返します。getFallbackLocale
(String baseName, Locale locale) ResourceBundle.getBundle
ファクトリ・メソッドがリソース・バンドルをさらに検索する際のフォール・バック・ロケールとして使用されるLocale
を返します。getFormats
(String baseName) 指定されたbaseName
のリソース・バンドルをロードする際に使用すべき形式が格納された、String
のList
を返します。static final ResourceBundle.Control
getNoFallbackControl
(List<String> formats) getFormats
メソッドが指定されたformats
を返し、かつgetFallbackLocale
メソッドがnull
を返す、ResourceBundle.Control
を返します。long
getTimeToLive
(String baseName, Locale locale) このResourceBundle.Control
の下でロードされるリソース・バンドルの有効期間(TTL)値を返します。boolean
needsReload
(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 String
toResourceName
(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
- バンドルをロードするために使用するClassLoader
reload
- バンドルの再ロードを示すフラグ。有効期限の切れたリソース・バンドルを再ロードする場合は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
- バンドルをロードするために使用するClassLoader
bundle
- キャッシュ内で有効期限の切れたリソース・バンドル・インスタンス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
である場合
-