ResourceBundle.Control 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
ResourceBundle.Control 定義了一組由工廠方法在組合載入過程中呼叫 ResourceBundle#getBundle(String,
Locale, ClassLoader, Control) ResourceBundle.getBundle 的回調方法。
[Android.Runtime.Register("java/util/ResourceBundle$Control", DoNotGenerateAcw=true)]
public class ResourceBundle.Control : Java.Lang.Object
[<Android.Runtime.Register("java/util/ResourceBundle$Control", DoNotGenerateAcw=true)>]
type ResourceBundle.Control = class
inherit Object
- 繼承
- 屬性
備註
ResourceBundle.Control 定義了一組由工廠方法在組合載入過程中呼叫 ResourceBundle#getBundle(String, Locale, ClassLoader, Control) ResourceBundle.getBundle 的回調方法。 換句話說,a ResourceBundle.Control 與工廠方法協作,用於載入資源包。 回調方法的預設實作提供工廠方法執行預設行為所需的資訊。
除了回調方法外, #toBundleName(String, Locale) toBundleName 和 #toResourceName(String, String) toResourceName 方法主要為了方便實作回調方法而定義。 然而,該 toBundleName 方法可被覆蓋,以提供在地資源組織與包裝上的不同慣例。 此 toResourceName 方法是 final 避免使用錯誤的資源與類別名稱分隔符。
兩個工廠方法, #getControl(List) 和 #getNoFallbackControl(List),提供了 ResourceBundle.Control 實作預設套件載入流程常見變體的實例。
方法回傳 Control#getFormats(String) getFormats 的格式及回傳的候選地點 ResourceBundle.Control#getCandidateLocales(String, Locale) getCandidateLocales 必須在同一基底包的所有 ResourceBundle.getBundle 調用中保持一致。 否則,方法 ResourceBundle.getBundle 可能會回傳非預期的束。 例如,如果方法第一次"java.class"呼叫getFormats回傳,第二次呼叫只ResourceBundle.getBundle回傳"java.properties",那麼第二次呼叫會回傳在第一次呼叫時快取的類別呼叫。
如果一個 ResourceBundle.Control 實例同時被多個執行緒使用,該實例必須是執行緒安全的。
ResourceBundle.getBundle 無法同步呼叫這些 ResourceBundle.Control 方法。 這些方法的預設實作是執行緒安全的。
應用程式可以指定 ResourceBundle.Control 由 getControl 工廠方法回傳或由子 ResourceBundle.Control 類別建立的實例,以自訂套件載入流程。 以下是更改預設套件載入流程的範例。
<b>範例 1</b>
以下程式碼只查找 ResourceBundle.getBundle 基於屬性的資源。
import java.util.*;
import static java.util.ResourceBundle.Control.*;
...
ResourceBundle bundle =
ResourceBundle.getBundle("MyResources", new Locale("fr", "CH"),
ResourceBundle.Control.getControl(FORMAT_PROPERTIES));
根據描述中範例ResourceBundle.getBundle中的資源叢,此ResourceBundle.getBundle呼叫載MyResources_fr_CH.properties入的父資源叢為MyResources_fr.propertiesMyResources.properties父叢集。 (MyResources_fr_CH.properties 並非隱藏,但 MyResources_fr_CH.class 確實隱藏著。)
<b>範例 2</b>
以下是一個使用 Properties#loadFromXML(java.io.InputStream) Properties.loadFromXMLXML 套件載入的範例。
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() {
...
}
}
新增於1.6版本。
的 java.util.ResourceBundle.ControlJava 檔。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
建構函式
| 名稱 | Description |
|---|---|
| ResourceBundle.Control() |
唯一的製造者。 |
| ResourceBundle.Control(IntPtr, JniHandleOwnership) |
建立 JNI 物件的 Managed 表示法時使用的建構函式;由運行時間呼叫。 |
欄位
| 名稱 | Description |
|---|---|
| TtlDontCache |
不快取載入的資源組合實例的存活時間常數。 |
| TtlNoExpirationControl |
這是用來停用快取中載入資源組合實例的到期控制的時間常數。 |
屬性
| 名稱 | Description |
|---|---|
| Class |
回傳此 |
| FormatClass |
僅包含 |
| FormatDefault |
預設格式 |
| FormatProperties |
僅包含 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
|
| JniPeerMembers |
|
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| ThresholdClass |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
| ThresholdType |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
方法
| 名稱 | Description |
|---|---|
| Clone() |
建立並回傳此物件的副本。 (繼承來源 Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
|
| Dispose() |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| Dispose(Boolean) |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| DisposeUnlessReferenced() |
|
| Equals(Object) |
|
| Equals(Object) |
表示是否有其他物體「等同」於此物。 (繼承來源 Object) |
| GetCandidateLocales(String, Locale) |
回傳 a |
| GetControl(IList<String>) |
|
| GetFallbackLocale(String, Locale) |
回傳 a |
| GetFormats(String) |
回傳 |
| GetHashCode() |
回傳物件的雜湊碼值。 (繼承來源 Object) |
| GetNoFallbackControl(IList<String>) |
|
| GetTimeToLive(String, Locale) |
回傳載入於此 |
| JavaFinalize() |
已淘汰.
當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。 (繼承來源 Object) |
| NeedsReload(String, Locale, String, ClassLoader, ResourceBundle, Int64) |
根據載 |
| NewBundle(String, Locale, String, ClassLoader, Boolean) |
根據指定格式與區域的組合名稱實例化資源組合,必要時使用指定的類別載入器。 |
| Notify() |
喚醒一個正在該物件監視器上等待的執行緒。 (繼承來源 Object) |
| NotifyAll() |
喚醒所有等待該物件監視器的執行緒。 (繼承來源 Object) |
| SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
|
| ToArray<T>() |
從這個 Java 陣列包裝器建立一個受管理陣列。 (繼承來源 Object) |
| ToBundleName(String, Locale) |
將給定 |
| ToResourceName(String, String) |
將 轉換為 |
| 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() |
|
| IJavaPeerable.Finalized() |
|
| IJavaPeerable.JniObjectReferenceControlBlock |
|
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
|
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
|
| IJavaPeerable.SetPeerReference(JniObjectReference) |
|
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
|
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |