ResourceBundle クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
リソース バンドルには、ロケール固有のオブジェクトが含まれています。
[Android.Runtime.Register("java/util/ResourceBundle", DoNotGenerateAcw=true)]
public abstract class ResourceBundle : Java.Lang.Object
[<Android.Runtime.Register("java/util/ResourceBundle", DoNotGenerateAcw=true)>]
type ResourceBundle = class
inherit Object
- 継承
- 派生
- 属性
注釈
リソース バンドルには、ロケール固有のオブジェクトが含まれています。 たとえば、プログラムでロケール固有のリソース ( String ) が必要な場合は、現在のユーザーのロケールに適したリソース バンドルから読み込むことができます。 この方法では、ユーザーのロケールに大きく依存しないプログラム コードを記述できます。すべてではないにしても、リソース バンドル内のロケール固有の情報の大部分を分離できます。
これにより、 <UL><LI> 異なる言語に簡単にローカライズまたは翻訳 <LI> 複数のロケールを一度に処理 <LI> 後でさらに多くのロケールをサポートするように簡単に変更できるプログラムを作成 </UL>
リソース バンドルは、メンバーが共通のベース名を共有しているが、その名前にはロケールを識別する追加のコンポーネントも含まれるファミリに属します。 たとえば、リソース バンドルのファミリの基本名は "MyResources" である可能性があります。 ファミリには、ファミリと同じ名前 ("MyResources" ) を持つ既定のリソース バンドルが必要です。特定のロケールがサポートされていない場合は、最後の手段のバンドルとして使用されます。 その後、ファミリは、必要に応じてロケール固有のメンバー (たとえば、"MyResources_de" という名前のドイツ語のメンバー) を提供できます。
ファミリ内の各リソース バンドルには同じアイテムが含まれていますが、そのアイテムは、そのリソース バンドルによって表されるロケールに対して変換されています。 たとえば、"MyResources" と "MyResources_de" の両方に、操作を取り消すボタンで使用される String が含まれる場合があります。 "MyResources" では、 String に "Cancel" が含まれる場合があり、"MyResources_de" には "Abbrechen" が含まれる場合があります。
国によってリソースが異なる場合は、特殊化を行うことができます。たとえば、"MyResources_de_CH" には、スイス (CH) のドイツ語 (de) のオブジェクトが含まれます。 特殊化の一部のリソースのみを変更する場合は、変更できます。
プログラムでロケール固有のオブジェクトが必要な場合は、ResourceBundle メソッド (#getBundle(java.lang.String, java.util.Locale) getBundleblockquote) を使用して< クラスを読み込みます。>
ResourceBundle myResources =
ResourceBundle.getBundle("MyResources", currentLocale);
</blockquote>
リソース バンドルには、キーと値のペアが含まれています。 キーは、バンドル内のロケール固有のオブジェクトを一意に識別します。 2 つのキーと値のペアを含む ListResourceBundle の例を次に示します: <blockquote>
public class MyResources extends ListResourceBundle {
protected Object[][] getContents() {
return new Object[][] {
// LOCALIZE THE SECOND STRING OF EACH ARRAY (e.g., "OK")
{"OkKey", "OK"},
{"CancelKey", "Cancel"},
// END OF MATERIAL TO LOCALIZE
};
}
}
</blockquote> キーは常に Stringです。 この例では、キーは "OkKey" と "CancelKey" です。 上記の例では、値も Strings--"OK" と "Cancel"- ですが、それである必要はありません。 値には、任意の種類のオブジェクトを指定できます。
適切な getter メソッドを使用して、リソース バンドルからオブジェクトを取得します。 "OkKey" と "CancelKey" は両方の文字列であるため、 getString を使用して取得します。 <blockquote>
button1 = new Button(myResources.getString("OkKey"));
button2 = new Button(myResources.getString("CancelKey"));
</blockquote> getter メソッドはすべて引数としてキーを必要とし、見つかった場合はオブジェクトを返します。 オブジェクトが見つからない場合、getter メソッドは MissingResourceExceptionをスローします。
getStringに加えて、ResourceBundleには、文字列配列、getStringArray、および他の種類のオブジェクトのジェネリック getObject メソッドを取得するためのメソッドも用意されています。
getObjectを使用する場合は、結果を適切な型にキャストする必要があります。 例: <blockquote>
int[] myIntegers = (int[]) myResources.getObject("intList");
</blockquote>
Java Platform には、ResourceBundleとListResourceBundleという 2 つのPropertyResourceBundleのサブクラスが用意されており、リソースを作成する非常に簡単な方法が提供されます。 前の例で簡単に説明したように、 ListResourceBundle はそのリソースをキーと値のペアの一覧として管理します。
PropertyResourceBundle では、プロパティ ファイルを使用してそのリソースを管理します。
ListResourceBundleまたはPropertyResourceBundleがニーズに合わない場合は、独自のResourceBundleサブクラスを記述できます。 サブクラスは、 handleGetObject と getKeys()の 2 つのメソッドをオーバーライドする必要があります。
複数のスレッドで同時に使用される場合、 ResourceBundle サブクラスの実装はスレッド セーフである必要があります。 このクラスの非抽象メソッドの既定の実装と、 ListResourceBundle および PropertyResourceBundle の直接の既知の具象サブクラス内のメソッドはスレッド セーフです。
<h3>ResourceBundle.Control</h3>
ResourceBundle.Control クラスは、getBundle インスタンスを受け取るResourceBundle.Control ファクトリ メソッドによってバンドルの読み込みプロセスを実行するために必要な情報を提供します。 標準以外のリソース バンドル形式を有効にしたり、検索戦略を変更したり、キャッシュ パラメーターを定義したりするために、独自のサブクラスを実装できます。 詳細については、クラスの説明と #getBundle(String, Locale, ClassLoader, Control) getBundle ファクトリ メソッドを参照してください。
<h3>Cache Management</h3>
getBundle ファクトリ メソッドによって作成されたリソース バンドル インスタンスは既定でキャッシュされ、ファクトリ メソッドは同じリソース バンドル インスタンスを複数回返します (キャッシュされている場合)。
getBundle クライアントは、キャッシュをクリアしたり、有効期限の値を使用してキャッシュされたリソース バンドル インスタンスの有効期間を管理したり、リソース バンドル インスタンスをキャッシュしないように指定したりできます。 詳細については、#getBundle(String、Locale、ClassLoader、Control) <code>getBundle</code> ファクトリ メソッド、 #clearCache(ClassLoader) clearCache、 Control#getTimeToLive(String, Locale) ResourceBundle.Control.getTimeToLive、および Control#needsReload(String, Locale, String, ClassLoader, ResourceBundle, long) ResourceBundle.Control.needsReload の説明を参照してください。
<h3>Example</h3>
2 つのリソースを管理する ResourceBundle サブクラス ( MyResources) の非常に単純な例を次に示します (リソースの数が多い場合は、 Mapを使用する可能性があります)。 "親レベル" ResourceBundle が同じ値を持つ同じキーを処理する場合は、値を指定する必要はありません (以下の okKey の場合と同様)。
<blockquote>
// default (English language, United States)
public class MyResources extends ResourceBundle {
public Object handleGetObject(String key) {
if (key.equals("okKey")) return "Ok";
if (key.equals("cancelKey")) return "Cancel";
return null;
}
public Enumeration<String> getKeys() {
return Collections.enumeration(keySet());
}
// Overrides handleKeySet() so that the getKeys() implementation
// can rely on the keySet() value.
protected Set<String> handleKeySet() {
return new HashSet<String>(Arrays.asList("okKey", "cancelKey"));
}
}
// German language
public class MyResources_de extends MyResources {
public Object handleGetObject(String key) {
// don't need okKey, since parent level handles it.
if (key.equals("cancelKey")) return "Abbrechen";
return null;
}
protected Set<String> handleKeySet() {
return new HashSet<String>(Arrays.asList("cancelKey"));
}
}
</blockquote>ResourceBundleの単一ファミリを使用するように自分自身を制限する必要はありません。 たとえば、例外メッセージ、 ExceptionResources (ExceptionResources_fr、 ExceptionResources_de、...)、ウィジェット用のバンドル、 WidgetResource (WidgetResources_fr、 WidgetResources_de、...) などのバンドルを用意し、リソースを好きなように分割することができます。
1.1 で追加されました。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
コンストラクター
| 名前 | 説明 |
|---|---|
| ResourceBundle() |
唯一のコンストラクター。 |
| ResourceBundle(IntPtr, JniHandleOwnership) |
JNI オブジェクトのマネージド表現を作成するときに使用されるコンストラクター。ランタイムによって呼び出されます。 |
プロパティ
| 名前 | 説明 |
|---|---|
| BaseBundleName |
このバンドルの基本名 (既知の場合) を返します。不明な場合は |
| Class |
この |
| Handle |
基になる Android インスタンスへのハンドル。 (継承元 Object) |
| JniIdentityHashCode |
相互運用ランタイムによってこのJava ピアに割り当てられた ID ハッシュ コードを取得します。 (継承元 Object) |
| JniManagedPeerState |
リソース バンドルには、ロケール固有のオブジェクトが含まれています。 (継承元 JavaObject) |
| JniPeerMembers |
リソース バンドルには、ロケール固有のオブジェクトが含まれています。 |
| Keys |
この |
| Locale |
このリソース バンドルのロケールを返します。 |
| Parent |
このバンドルの親バンドル。 |
| PeerReference |
このJava ピアの JNI オブジェクト参照を取得します。 (継承元 Object) |
| ThresholdClass |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 |
| ThresholdType |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 |
メソッド
| 名前 | 説明 |
|---|---|
| ClearCache() |
呼び出し元のクラス ローダーを使用して読み込まれたすべてのリソース バンドルをキャッシュから削除します。 |
| ClearCache(ClassLoader) |
指定されたクラス ローダーによって読み込まれたすべてのリソース バンドルをキャッシュから削除します。 |
| Clone() |
このオブジェクトのコピーを作成して返します。 (継承元 Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
リソース バンドルには、ロケール固有のオブジェクトが含まれています。 (継承元 JavaObject) |
| ContainsKey(String) |
指定した |
| Dispose() |
このJava ピアによって保持されているリソースを解放します。 (継承元 Object) |
| Dispose(Boolean) |
このJava ピアによって保持されているリソースを解放します。 (継承元 Object) |
| DisposeUnlessReferenced() |
リソース バンドルには、ロケール固有のオブジェクトが含まれています。 (継承元 JavaObject) |
| Equals(Object) |
リソース バンドルには、ロケール固有のオブジェクトが含まれています。 (継承元 JavaObject) |
| Equals(Object) |
他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。 (継承元 Object) |
| GetBundle(String, Locale, ClassLoader, ResourceBundle+Control) |
指定した基本名、既定のロケール、および呼び出し元のクラス ローダーを使用して、リソース バンドルを取得します。 |
| GetBundle(String, Locale, ClassLoader) |
指定した基本名、ロケール、およびクラス ローダーを使用してリソース バンドルを取得します。 |
| GetBundle(String, Locale, ResourceBundle+Control) |
指定した基本名、既定のロケール、および呼び出し元のクラス ローダーを使用して、リソース バンドルを取得します。 |
| GetBundle(String, Locale) |
指定した基本名とロケール、および呼び出し元のクラス ローダーを使用してリソース バンドルを取得します。 |
| GetBundle(String, ResourceBundle+Control) |
指定した基本名、既定のロケール、および呼び出し元のクラス ローダーを使用して、リソース バンドルを取得します。 |
| GetBundle(String) |
指定した基本名、既定のロケール、および呼び出し元のクラス ローダーを使用して、リソース バンドルを取得します。 |
| GetHashCode() |
オブジェクトのハッシュ コード値を返します。 (継承元 Object) |
| GetObject(String) |
このリソース バンドルまたはその親のいずれかから、指定されたキーのオブジェクトを取得します。 |
| GetString(String) |
このリソース バンドルまたはその親のいずれかから、指定されたキーの文字列を取得します。 |
| GetStringArray(String) |
このリソース バンドルまたはその親のいずれかから、指定されたキーの文字列配列を取得します。 |
| HandleGetObject(String) |
このリソース バンドルから、指定されたキーのオブジェクトを取得します。 |
| HandleKeySet() |
この |
| JavaFinalize() |
オブジェクトへの参照がなくなったとガベージ コレクションによって判断されたときに、オブジェクトのガベージ コレクターによって呼び出されます。 (継承元 Object) |
| KeySet() |
この |
| Notify() |
このオブジェクトのモニターで待機している 1 つのスレッドを起動します。 (継承元 Object) |
| NotifyAll() |
このオブジェクトのモニターで待機しているすべてのスレッドを起動します。 (継承元 Object) |
| SetHandle(IntPtr, JniHandleOwnership) |
Handle プロパティを設定します。 (継承元 Object) |
| SetParent(ResourceBundle) |
このバンドルの親バンドルを設定します。 |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
リソース バンドルには、ロケール固有のオブジェクトが含まれています。 (継承元 JavaObject) |
| ToArray<T>() |
このJava配列ラッパーからマネージド配列を作成します。 (継承元 Object) |
| ToString() |
オブジェクトの文字列形式を返します。 (継承元 Object) |
| UnregisterFromRuntime() |
相互運用ランタイムからこのJava ピアの登録を解除します。 (継承元 Object) |
| Wait() |
現在のスレッドが起動するまで待機します。通常は、 <em>notified</em> または <em>interrupted</em>。 (継承元 Object) |
| Wait(Int64, Int32) |
現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。 (継承元 Object) |
| Wait(Int64) |
現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。 (継承元 Object) |
明示的なインターフェイスの実装
| 名前 | 説明 |
|---|---|
| IJavaPeerable.Disposed() |
リソース バンドルには、ロケール固有のオブジェクトが含まれています。 (継承元 JavaObject) |
| IJavaPeerable.Finalized() |
リソース バンドルには、ロケール固有のオブジェクトが含まれています。 (継承元 JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
リソース バンドルには、ロケール固有のオブジェクトが含まれています。 (継承元 JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
リソース バンドルには、ロケール固有のオブジェクトが含まれています。 (継承元 JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
リソース バンドルには、ロケール固有のオブジェクトが含まれています。 (継承元 JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
リソース バンドルには、ロケール固有のオブジェクトが含まれています。 (継承元 JavaObject) |
拡張メソッド
| 名前 | 説明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
インスタンス |
| JavaAs<TResult>(IJavaPeerable) |
|
| JavaCast<TResult>(IJavaObject) |
Android ランタイムチェック型変換を実行します。 |
| JavaCast<TResult>(IJavaObject) |
リソース バンドルには、ロケール固有のオブジェクトが含まれています。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
|