ResourceBundle.GetBundle 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
| GetBundle(String) |
使用指定的基底名稱、預設地區設定和呼叫端的類別載入器,取得資源組合。 |
| GetBundle(String, Locale) |
使用指定的基底名稱和地區設定,以及呼叫端的類別載入器,取得資源組合。 |
| GetBundle(String, ResourceBundle+Control) |
使用指定的基底名稱、預設地區設定和呼叫端的類別載入器,取得資源組合。 |
| GetBundle(String, Locale, ClassLoader) |
使用指定的基底名稱、地區設定和類別載入器,取得資源組合。 |
| GetBundle(String, Locale, ResourceBundle+Control) |
使用指定的基底名稱、預設地區設定和呼叫端的類別載入器,取得資源組合。 |
| GetBundle(String, Locale, ClassLoader, ResourceBundle+Control) |
使用指定的基底名稱、預設地區設定和呼叫端的類別載入器,取得資源組合。 |
GetBundle(String)
使用指定的基底名稱、預設地區設定和呼叫端的類別載入器,取得資源組合。
[Android.Runtime.Register("getBundle", "(Ljava/lang/String;)Ljava/util/ResourceBundle;", "")]
public static Java.Util.ResourceBundle? GetBundle (string? baseName);
[<Android.Runtime.Register("getBundle", "(Ljava/lang/String;)Ljava/util/ResourceBundle;", "")>]
static member GetBundle : string -> Java.Util.ResourceBundle
參數
- baseName
- String
資源套件組合的基底名稱,完整類別名稱
傳回
指定基底名稱和預設地區設定的資源配套
- 屬性
例外狀況
如果找不到 , ResourceBundle 則為 。
備註
使用指定的基底名稱、預設地區設定和呼叫端的類別載入器,取得資源組合。 呼叫此方法相當於呼叫 <blockquote>getBundle(baseName, Locale.getDefault(), this.getClass().getClassLoader())、 </blockquote>
的 java.util.ResourceBundle.getBundle(java.lang.String)Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
適用於
GetBundle(String, Locale)
使用指定的基底名稱和地區設定,以及呼叫端的類別載入器,取得資源組合。
[Android.Runtime.Register("getBundle", "(Ljava/lang/String;Ljava/util/Locale;)Ljava/util/ResourceBundle;", "")]
public static Java.Util.ResourceBundle? GetBundle (string? baseName, Java.Util.Locale? locale);
[<Android.Runtime.Register("getBundle", "(Ljava/lang/String;Ljava/util/Locale;)Ljava/util/ResourceBundle;", "")>]
static member GetBundle : string * Java.Util.Locale -> Java.Util.ResourceBundle
參數
- baseName
- String
資源套件組合的基底名稱,完整類別名稱
- locale
- Locale
需要資源配套的地區設定
傳回
指定基底名稱和地區設定的資源組合
- 屬性
例外狀況
如果找不到資源配套,則為 。
備註
使用指定的基底名稱和地區設定,以及呼叫端的類別載入器,取得資源組合。 呼叫此方法相當於呼叫 <blockquote>getBundle(baseName, locale, this.getClass().getClassLoader())、 </blockquote>
的 java.util.ResourceBundle.getBundle(java.lang.String, java.util.Locale)Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
適用於
GetBundle(String, ResourceBundle+Control)
使用指定的基底名稱、預設地區設定和呼叫端的類別載入器,取得資源組合。
[Android.Runtime.Register("getBundle", "(Ljava/lang/String;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;", "")]
public static Java.Util.ResourceBundle? GetBundle (string? baseName, Java.Util.ResourceBundle.Control? control);
[<Android.Runtime.Register("getBundle", "(Ljava/lang/String;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;", "")>]
static member GetBundle : string * Java.Util.ResourceBundle.Control -> Java.Util.ResourceBundle
參數
- baseName
- String
資源套件組合的基底名稱,完整類別名稱
- control
- ResourceBundle.Control
控制存取順序的控制件
傳回
指定基底名稱和預設地區設定的資源配套
- 屬性
備註
的 java.util.ResourceBundle.getBundle(java.lang.String)Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
適用於
GetBundle(String, Locale, ClassLoader)
使用指定的基底名稱、地區設定和類別載入器,取得資源組合。
[Android.Runtime.Register("getBundle", "(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/ClassLoader;)Ljava/util/ResourceBundle;", "")]
public static Java.Util.ResourceBundle? GetBundle (string? baseName, Java.Util.Locale? locale, Java.Lang.ClassLoader? loader);
[<Android.Runtime.Register("getBundle", "(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/ClassLoader;)Ljava/util/ResourceBundle;", "")>]
static member GetBundle : string * Java.Util.Locale * Java.Lang.ClassLoader -> Java.Util.ResourceBundle
參數
- baseName
- String
資源套件組合的基底名稱,完整類別名稱
- locale
- Locale
需要資源配套的地區設定
- loader
- ClassLoader
要從中載入資源套件組合的類別載入器
傳回
指定基底名稱和地區設定的資源組合
- 屬性
例外狀況
如果找不到 , ResourceBundle 則為 。
備註
使用指定的基底名稱、地區設定和類別載入器,取得資源組合。
這相當於呼叫: <blockquote>
getBundle(baseName, targetLocale, loader, control)
</blockquote> 傳遞 的預設實例 Control。 請參閱修改預設行為的描述。 下列描述預設行為。
<b>“default_behavior”>資源組合搜尋和載入策略</b>
getBundle 會使用基底名稱、指定的地區設定和預設地區設定(從 java.util.Locale#getDefault() Locale.getDefault取得)來產生一連串的 「candidate」><em>候選組合名稱</em>。 如果指定的地區設定語言、腳本、國家/地區和變體都是空字串,則基底名稱是唯一的候選套件組合名稱。 否則,會從指定地區設定的屬性值產生候選地區設定清單(語言、腳本、國家/地區和變體),並附加至基底名稱。 一般而言,這看起來會像下面這樣:
baseName + "_" + language + "_" + script + "_" + country + "_" + variant
baseName + "_" + language + "_" + script + "_" + country
baseName + "_" + language + "_" + script
baseName + "_" + language + "_" + country + "_" + variant
baseName + "_" + language + "_" + country
baseName + "_" + language
候選套件組合名稱,其中最後元件是空字串,以及底線。 例如,如果 country 是空字串,則會省略上述第二個和第五個候選組合名稱。 此外,如果腳本是空字串,則會省略包含腳本的候選名稱。 例如,語言為 「de」 和 variant “JAVA” 的地區設定,會產生名稱如下的候選名稱 「MyResource」。
MyResource_de__JAVA
MyResource_de
如果變體包含一或多個底線('_'),則會截斷最後一個底線,並在候選套件組合名稱後面插入具有原始變體的候選套件組合名稱之後,產生一連串的配套名稱。 例如,若地區設定的語言為 「en」、腳本 「Latn、country 」US」 和 variant “WINDOWS_VISTA”,以及套件組合基底名稱 “MyResource”,則會產生下列候選套件組合名稱清單:
MyResource_en_Latn_US_WINDOWS_VISTA
MyResource_en_Latn_US_WINDOWS
MyResource_en_Latn_US
MyResource_en_Latn
MyResource_en_US_WINDOWS_VISTA
MyResource_en_US_WINDOWS
MyResource_en_US
MyResource_en
<blockquote><b>注意:</b> 對於某些 Locales,候選套件組合名稱清單包含額外的名稱,或套件組合名稱的順序會稍微修改。 如需詳細資訊,請參閱的預設實 Control#getCandidateLocales(String, Locale) getCandidateLocales 作描述。</blockquote>
getBundle然後逐一查看候選套件組合名稱,以尋找可以<>具現化</em> 實際資源配套的第一個套件組合。 它會使用預設控件的 Control#getFormats getFormats 方法,為每個產生的名稱產生兩個套件組合名稱、第一個類別名稱和第二個屬性檔名。 針對每個候選套件組合名稱,它會嘗試建立資源套件組合:
<ul><li>First,它會嘗試使用產生的類別名稱載入類別。 如果可以使用指定的類別載入器找到並載入這類類別,則指派與 ResourceBundle 相容、可從 ResourceBundle 存取,而且可以具現化、 getBundle 建立這個類別的新實例,並將它當做 <em>result resource bundle</em> 使用。
<li>否則, getBundle 會嘗試使用產生的屬性檔名來尋找屬性資源檔。 它會以 「/」 取代所有 「字元」,並附加字串 「.properties」,以從候選套件組合名稱產生路徑名稱。 它會嘗試使用 java.lang.ClassLoader#getResource(java.lang.String) ClassLoader.getResource尋找具有此名稱的「資源」。 (請注意,從某種意義上說 getResource ,「資源」與資源套件組合的內容無關,它只是數據容器,例如檔案。如果找到「資源」,它會嘗試從其內容建立新的 PropertyResourceBundle 實例。 如果成功,此實例會 <變成em>結果資源套件組合</em>。 </ul>
這會繼續執行,直到具現化結果資源套件組合,或候選套件組合名稱的清單用盡為止。 如果找不到相符的資源配套,則會呼叫預設控件的 Control#getFallbackLocale getFallbackLocale 方法,這會傳回目前的默認地區設定。 新的候選地區設定名稱序列會使用此地區設定產生,並再次搜尋,如上所示。
如果仍然找不到結果套件組合,則會單獨查閱基底名稱。 如果仍然失敗, MissingResourceException 則會擲回 。
「parent_chain」> 一旦找到結果資源配套,就會具現化其 <em>父鏈<結/em> 。 如果結果組合已經有父系(也許是因為從快取傳回),鏈結就會完成。
否則, getBundle 會檢查產生結果資源配套之傳遞期間所使用的候選地區設定清單的其餘部分。 (如前所述,省略最終元件為空字串的候選套件組合名稱。當談到候選清單的結尾時,它會嘗試一般套件組合名稱。 使用每個候選套件組合名稱時,它會嘗試具現化資源套件組合(先尋找類別,然後再尋找屬性檔,如上所述)。
只要成功,就會使用新的資源套件組合呼叫先前具現化的資源套件組合 #setParent(java.util.ResourceBundle) setParent 方法。 這會繼續執行,直到名稱清單用盡,或目前的套件組合已經有非 Null 父系為止。
父鏈完成之後,就會傳回套件組合。
<b>注意:</b>getBundle 會快取具現化的資源套件組合,而且可能會多次傳回相同的資源套件組合實例。
<b>注意:</b>自 baseName 變數應該是完整類別名稱。 不過,為了與舊版相容,Java SE 運行時間環境不會驗證此情況,因此可以藉由指定路徑名稱(使用 “/”) 而不是完整類別名稱來存取 PropertyResourceBundles。」
“default_behavior_example”><strong>Example:</strong>
提供下列類別和屬性檔案:ul>li MyResources.class <li>MyResources.properties <li>MyResources_fr.properties<> li MyResources_fr_CH.class>< li MyResources_fr_CH.properties li MyResources_en.properties><< li>MyResources_es_ES.class </ul><<>
所有檔案的內容都是有效的(也就是 “.class” 檔案的公用非抽象子類別 ResourceBundle ,語法正確 “.properties” 檔案)。 預設地區設定為 Locale("en", "GB")。
使用下列地區設定自變數呼叫 getBundle 將會具現化資源套件組合,如下所示:
<table class=“striped”><caption style=“display:none”>getBundle() locale to resource bundle mapping</caption><thead>><<tr th scope=“col”>Locale/th><scope=“col”>Resource< bundle/th></tr<>/thead><tbody<>tr><th scope=“row”>Locale<(“fr”, “CH”)</th><td MyResources_fr_CH.class, parent MyResources_fr.properties, parent MyResources.class</td>></tr><tr><th scope=“row”>Locale(“fr”, “FR”)</th><td>MyResources_fr.properties, parent MyResources.class</td></tr><><th scope=“row”>Locale(“de”, “DE”)</th td>MyResources_en.properties, parent MyResources.class</td></tr tr<><>th scope=“row”>Locale(“en”, “US”)</th><><td>MyResources_en.properties, parent MyResources.class</td></tr><tr><th scope=“row”>Locale(“es”, “ES”)</th><td MyResources_es_ES.class, parent MyResources.class</td>></tr></tbody></table>
MyResources_fr_CH.properties 檔案永遠不會使用,因為 MyResources_fr_CH.class 會隱藏它。 同樣地,MyResources.properties 也會由 MyResources.class 隱藏。
已在1.2中新增。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
適用於
GetBundle(String, Locale, ResourceBundle+Control)
使用指定的基底名稱、預設地區設定和呼叫端的類別載入器,取得資源組合。
[Android.Runtime.Register("getBundle", "(Ljava/lang/String;Ljava/util/Locale;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;", "")]
public static Java.Util.ResourceBundle? GetBundle (string? baseName, Java.Util.Locale? targetLocale, Java.Util.ResourceBundle.Control? control);
[<Android.Runtime.Register("getBundle", "(Ljava/lang/String;Ljava/util/Locale;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;", "")>]
static member GetBundle : string * Java.Util.Locale * Java.Util.ResourceBundle.Control -> Java.Util.ResourceBundle
參數
- baseName
- String
資源套件組合的基底名稱,完整類別名稱
- targetLocale
- Locale
資源配套的目標地區設定
- control
- ResourceBundle.Control
控制存取順序的控制件
傳回
指定基底名稱和預設地區設定的資源配套
- 屬性
備註
的 java.util.ResourceBundle.getBundle(java.lang.String)Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
適用於
GetBundle(String, Locale, ClassLoader, ResourceBundle+Control)
使用指定的基底名稱、預設地區設定和呼叫端的類別載入器,取得資源組合。
[Android.Runtime.Register("getBundle", "(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/ClassLoader;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;", "")]
public static Java.Util.ResourceBundle? GetBundle (string? baseName, Java.Util.Locale? targetLocale, Java.Lang.ClassLoader? loader, Java.Util.ResourceBundle.Control? control);
[<Android.Runtime.Register("getBundle", "(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/ClassLoader;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;", "")>]
static member GetBundle : string * Java.Util.Locale * Java.Lang.ClassLoader * Java.Util.ResourceBundle.Control -> Java.Util.ResourceBundle
參數
- baseName
- String
資源套件組合的基底名稱,完整類別名稱
- targetLocale
- Locale
資源配套的目標地區設定
- loader
- ClassLoader
要載入資源的類別載入器
- control
- ResourceBundle.Control
控制存取順序的控制件
傳回
指定基底名稱和預設地區設定的資源配套
- 屬性
備註
的 java.util.ResourceBundle.getBundle(java.lang.String)Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。