語言

ResourceBundle.Control 類別

定義

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.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.ControlgetControl 工廠方法回傳或由子 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&lt;String&gt; 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&lt;String&gt; getKeys() {
                    ...
                }
            }

新增於1.6版本。

java.util.ResourceBundle.ControlJava 檔。

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

建構函式

名稱 Description
ResourceBundle.Control()

唯一的製造者。

ResourceBundle.Control(IntPtr, JniHandleOwnership)

建立 JNI 物件的 Managed 表示法時使用的建構函式;由運行時間呼叫。

欄位

名稱 Description
TtlDontCache

不快取載入的資源組合實例的存活時間常數。

TtlNoExpirationControl

這是用來停用快取中載入資源組合實例的到期控制的時間常數。

屬性

名稱 Description
Class

回傳此 Object的執行時類別。

(繼承來源 Object)
FormatClass

僅包含 List的類別格式"java.class"

FormatDefault

預設格式 List為 ,包含字串 "java.class""java.properties",順序如下。

FormatProperties

僅包含List屬性的格式"java.properties"

Handle

底層 Android 實例的帳號。

(繼承來源 Object)
JniIdentityHashCode

取得由互通執行時指派給此 Java 對等端的身份雜湊碼。

(繼承來源 Object)
JniManagedPeerState

ResourceBundle.Control 定義了一組由工廠方法在組合載入過程中呼叫 ResourceBundle#getBundle(String, Locale, ClassLoader, Control) ResourceBundle.getBundle 的回調方法。

(繼承來源 JavaObject)
JniPeerMembers

ResourceBundle.Control 定義了一組由工廠方法在組合載入過程中呼叫 ResourceBundle#getBundle(String, Locale, ClassLoader, Control) ResourceBundle.getBundle 的回調方法。

PeerReference

取得這個 Java 節點的 JNI 物件參考。

(繼承來源 Object)
ThresholdClass

此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。

ThresholdType

此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。

方法

名稱 Description
Clone()

建立並回傳此物件的副本。

(繼承來源 Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

ResourceBundle.Control 定義了一組由工廠方法在組合載入過程中呼叫 ResourceBundle#getBundle(String, Locale, ClassLoader, Control) ResourceBundle.getBundle 的回調方法。

(繼承來源 JavaObject)
Dispose()

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
Dispose(Boolean)

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
DisposeUnlessReferenced()

ResourceBundle.Control 定義了一組由工廠方法在組合載入過程中呼叫 ResourceBundle#getBundle(String, Locale, ClassLoader, Control) ResourceBundle.getBundle 的回調方法。

(繼承來源 JavaObject)
Equals(Object)

ResourceBundle.Control 定義了一組由工廠方法在組合載入過程中呼叫 ResourceBundle#getBundle(String, Locale, ClassLoader, Control) ResourceBundle.getBundle 的回調方法。

(繼承來源 JavaObject)
Equals(Object)

表示是否有其他物體「等同」於此物。

(繼承來源 Object)
GetCandidateLocales(String, Locale)

回傳 a List 作為 LocalebaseNamelocale的候選位置 s。

GetControl(IList<String>)

ResourceBundle.Control 定義了一組由工廠方法在組合載入過程中呼叫 ResourceBundle#getBundle(String, Locale, ClassLoader, Control) ResourceBundle.getBundle 的回調方法。

GetFallbackLocale(String, Locale)

回傳 a Locale 作為工廠方法後續資源組合搜尋 ResourceBundle.getBundle 的備用位置。

GetFormats(String)

回傳ListString包含格式的 a ,用於載入給定baseName資源包的格式。

GetHashCode()

回傳物件的雜湊碼值。

(繼承來源 Object)
GetNoFallbackControl(IList<String>)

ResourceBundle.Control 定義了一組由工廠方法在組合載入過程中呼叫 ResourceBundle#getBundle(String, Locale, ClassLoader, Control) ResourceBundle.getBundle 的回調方法。

GetTimeToLive(String, Locale)

回傳載入於此 ResourceBundle.Control的資源包的存活時間(TTL)值。

JavaFinalize()
已淘汰.

當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。

(繼承來源 Object)
NeedsReload(String, Locale, String, ClassLoader, ResourceBundle, Int64)

根據載bundle入時間或其他條件,判斷快取中的過loadTime期資料是否需要重新載入。

NewBundle(String, Locale, String, ClassLoader, Boolean)

根據指定格式與區域的組合名稱實例化資源組合,必要時使用指定的類別載入器。

Notify()

喚醒一個正在該物件監視器上等待的執行緒。

(繼承來源 Object)
NotifyAll()

喚醒所有等待該物件監視器的執行緒。

(繼承來源 Object)
SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

ResourceBundle.Control 定義了一組由工廠方法在組合載入過程中呼叫 ResourceBundle#getBundle(String, Locale, ClassLoader, Control) ResourceBundle.getBundle 的回調方法。

(繼承來源 JavaObject)
ToArray<T>()

從這個 Java 陣列包裝器建立一個受管理陣列。

(繼承來源 Object)
ToBundleName(String, Locale)

將給定 baseName 的 和 locale 轉換成 bundle 名稱。

ToResourceName(String, String)

將 轉換為bundleName方法所需的ClassLoader#getResource ClassLoader.getResource形式,方法是將所有 的出現'.'替換為 bundleName a '/' 並附加 a '.' 及給定檔案suffix

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()

ResourceBundle.Control 定義了一組由工廠方法在組合載入過程中呼叫 ResourceBundle#getBundle(String, Locale, ClassLoader, Control) ResourceBundle.getBundle 的回調方法。

(繼承來源 JavaObject)
IJavaPeerable.Finalized()

ResourceBundle.Control 定義了一組由工廠方法在組合載入過程中呼叫 ResourceBundle#getBundle(String, Locale, ClassLoader, Control) ResourceBundle.getBundle 的回調方法。

(繼承來源 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

ResourceBundle.Control 定義了一組由工廠方法在組合載入過程中呼叫 ResourceBundle#getBundle(String, Locale, ClassLoader, Control) ResourceBundle.getBundle 的回調方法。

(繼承來源 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

ResourceBundle.Control 定義了一組由工廠方法在組合載入過程中呼叫 ResourceBundle#getBundle(String, Locale, ClassLoader, Control) ResourceBundle.getBundle 的回調方法。

(繼承來源 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

ResourceBundle.Control 定義了一組由工廠方法在組合載入過程中呼叫 ResourceBundle#getBundle(String, Locale, ClassLoader, Control) ResourceBundle.getBundle 的回調方法。

(繼承來源 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

ResourceBundle.Control 定義了一組由工廠方法在組合載入過程中呼叫 ResourceBundle#getBundle(String, Locale, ClassLoader, Control) ResourceBundle.getBundle 的回調方法。

(繼承來源 JavaObject)

擴充方法

名稱 Description
GetJniTypeName(IJavaPeerable)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時檢查型別轉換。

JavaCast<TResult>(IJavaObject)

ResourceBundle.Control 定義了一組由工廠方法在組合載入過程中呼叫 ResourceBundle#getBundle(String, Locale, ClassLoader, Control) ResourceBundle.getBundle 的回調方法。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於