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);
</區塊引用>
資源組合包含鍵值對。 這些鍵鍵唯一地標示套件中特定於當地的物件。 這裡有一個包含兩個鍵值對的 a 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> 鍵總是 Strings。 在這個例子中,鍵是「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");
</區塊引用>
Java 平台提供了兩個子ResourceBundle類別 和 ListResourceBundlePropertyResourceBundle,提供一種相當簡單的資源創建方式。 如你在前面範例中簡短看到的,它 ListResourceBundle 以鍵值對清單來管理資源。
PropertyResourceBundle 使用屬性檔案來管理其資源。
如果ListResourceBundlePropertyResourceBundle不適合你的需求,你可以自己寫ResourceBundle子職業。 你的子類別必須覆蓋兩個方法: handleGetObject 和 getKeys()。
若子 ResourceBundle 類別同時被多個執行緒使用,該子類別的實作必須是執行緒安全的。 此類別中非抽象方法的預設實作,以及直接已知具體子類別 ListResourceBundle 和 PropertyResourceBundle 的方法,皆為執行緒安全。
<h3>ResourceBundle.Control</h3>
該ResourceBundle.Control類別提供執行工廠方法(取一個getBundle實例)所需的資訊,以執行組合載入過程ResourceBundle.Control。 你可以實作自己的子類別,以啟用非標準的資源包格式、改變搜尋策略,或定義快取參數。 詳情請參閱類別描述及 #getBundle(String, Locale, ClassLoader, Control) getBundle 工廠方法。
<h3>快取管理</h3>
由 getBundle 工廠方法建立的資源包實例預設為快取,且工廠方法若已快取,會多次回傳相同的資源包實例。
getBundle 用戶端可以清除快取、使用存活時間值管理快取資源組合實例的存續時間,或指定不快取資源組合實例。 詳情請參閱 #getBundle(String, Locale, ClassLoader, Control) <程式碼 getBundle>/code< factory 方法的>描述, , #clearCache(ClassLoader) clearCacheControl#getTimeToLive(String, Locale) ResourceBundle.Control.getTimeToLiveControl#needsReload(String, Locale, String, ClassLoader, ResourceBundle, long) ResourceBundle.Control.needsReload
<h3>範例</h3>
以下是一個非常簡單的子類別範例,該ResourceBundle子類別MyResources管理兩個資源(若資源數量較多,通常會使用 )。Map 請注意,如果「父層級」 ResourceBundle 處理相同的金鑰且值相同(與下方 okKey 相同),你不需要提供值。
<引用>
// 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的 s。 例如,你可以有一組用於例外訊息的套件( ExceptionResources ,ExceptionResources_frExceptionResources_de , ...),以及一組用於小工具的套件(WidgetResourceWidgetResources_fr, WidgetResources_de...);可以隨你喜歡地拆分資源。
在 1.1 版本中加入。
的 java.util.ResourceBundleJava 檔。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
建構函式
| 名稱 | Description |
|---|---|
| ResourceBundle() |
唯一的製造者。 |
| ResourceBundle(IntPtr, JniHandleOwnership) |
用於建立 JNI 物件受管理表示的建構器;由執行時呼叫。 |
屬性
| 名稱 | Description |
|---|---|
| BaseBundleName |
若已知 |
| Class |
回傳此 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
資源包包含特定區域的物件。 (繼承來源 JavaObject) |
| JniPeerMembers |
資源包包含特定區域的物件。 |
| Keys |
回傳此 |
| Locale |
回傳此資源包的位置。 |
| Parent |
這個叢集的父叢。 |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| ThresholdClass |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
| ThresholdType |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
方法
| 名稱 | Description |
|---|---|
| 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() |
回傳 a |
| JavaFinalize() |
已淘汰.
當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。 (繼承來源 Object) |
| KeySet() |
回傳此 |
| Notify() |
喚醒一個正在該物件監視器上等待的執行緒。 (繼承來源 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>通知</><em 或 em>中斷</em> 來喚醒。 (繼承來源 Object) |
| Wait(Int64, Int32) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
| Wait(Int64) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
明確介面實作
| 名稱 | Description |
|---|---|
| IJavaPeerable.Disposed() |
資源包包含特定區域的物件。 (繼承來源 JavaObject) |
| IJavaPeerable.Finalized() |
資源包包含特定區域的物件。 (繼承來源 JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
資源包包含特定區域的物件。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
資源包包含特定區域的物件。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
資源包包含特定區域的物件。 (繼承來源 JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
資源包包含特定區域的物件。 (繼承來源 JavaObject) |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時間檢查的類型轉換。 |
| JavaCast<TResult>(IJavaObject) |
資源包包含特定區域的物件。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |