ResourceBundle.GetBundle 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
| 名稱 | Description |
|---|---|
| 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 文件 java.util.ResourceBundle.getBundle(java.lang.String)。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
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 文件 java.util.ResourceBundle.getBundle(java.lang.String, java.util.Locale)。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
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 文件 java.util.ResourceBundle.getBundle(java.lang.String)。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
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)來產生一連串「候選><」EM>候選組合名稱</EM>。 如果指定地區的語言、腳本、國家和變體都是空字串,則基底名稱就是唯一的候選組合名稱。 否則,會根據指定地區(語言、文字、國家及變體)的屬性值產生候選地點清單,並附加在基底名稱後。 通常,這會是這樣:
baseName + "_" + language + "_" + script + "_" + country + "_" + variant
baseName + "_" + language + "_" + script + "_" + country
baseName + "_" + language + "_" + script
baseName + "_" + language + "_" + country + "_" + variant
baseName + "_" + language + "_" + country
baseName + "_" + language
若最後一個分量為空字串的候選組合名稱及底線都會省略。 例如,若 country 為空字串,則上述第二與第五候選組合名稱將被省略。 此外,若 script 為空字串,則省略包含 script 的候選名稱。 例如,語言為「de」且變體為「JAVA」的區域會產生以下基底名稱為「MyResource」的候選名稱。
MyResource_de__JAVA
MyResource_de
若變體包含一個或多個底線('_'),則在包含原始變體的候選組合名稱後,插入一連串由截斷最後底線及其後部分所產生的組合名稱。 例如,對於一個語言為「en」、文字為「Latn」、「國家為US」及變體為「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 實作的說明。</區塊引用>
getBundle接著會反覆檢查候選組合名稱,找出第一個能 <EM 實例<化/EM> 實際資源>組合的名稱。 它使用預設的 controls Control#getFormats getFormats 方法,為每個產生的名稱產生兩個組合名稱,第一個為類別名稱,第二個為屬性檔名稱。 對於每個候選組合名稱,它嘗試建立一個資源組合:
<ul><li>首先,它嘗試使用產生的類別名稱載入類別。 如果能透過指定的類別載入器找到並載入此類類別,且與 ResourceBundle 的賦值相容,且可從 ResourceBundle 存取,且可實例化,則 getBundle 可建立該類別的新實例並用作 <em>結果資源包</em>。
<li>否則, getBundle 嘗試使用產生的屬性檔案名稱來定位屬性資源檔案。 它透過將所有「.」字元替換為「/」並附加字串「.properties」,從候選包名稱產生路徑名稱。 它嘗試使用 java.lang.ClassLoader#getResource(java.lang.String) ClassLoader.getResource。 (請注意,所謂的「資源」 getResource 與資源包的內容無關,它只是一個資料容器,例如檔案。)如果找到一個「資源」,它會嘗試從該內容建立一個新的 PropertyResourceBundle 實例。 若成功,該實例將成為 <em>結果資源包</em>。
</ul>
此過程持續進行,直到結果資源組合實例化或候選資源組合名稱清單用盡為止。 若未找到匹配的資源包,則呼叫預設控制 Control#getFallbackLocale getFallbackLocale 項的方法,回傳當前預設位置。 利用此區域產生一連串候選地點名稱,並如上再次搜尋。
如果仍然找不到結果包,則只查詢基礎名稱。 若仍失敗,則擲出 a MissingResourceException 。
「parent_chain」> 一旦找到結果資源包,其 <em>父鏈</em> 就會被實例化。 如果結果包已經有父節點(可能是從快取回傳),那麼該鏈是完整的。
否則, getBundle 檢查在產生結果資源包時使用的候選地點清單的其餘部分。 (如前所述,若最後一個分量為空字串的候選叢名稱則省略。)當候補清單的最後時,它會嘗試使用純纖維組合名稱。 每個候選包名稱時,它嘗試實例化一個資源包(先尋找類別,再尋找屬性檔案,如上所述)。
當成功時,會用新的資源包呼叫先前實例化的資源包 #setParent(java.util.ResourceBundle) setParent 的方法。 此過程持續進行,直到名稱清單用盡或目前的子叢集已有非空父節點。
當父鏈完成後,該束會被回傳。
<b>注意:</b>getBundle 會快取實例化的資源包,可能會多次回傳相同的資源包實例。
<b>註:</b>論 baseName 點應該是完全限定的類別名稱。 然而,為了與早期版本的相容性,Java SE 執行環境並未驗證此點,因此可以透過指定路徑名稱(使用「/」)而非完全限定的類別名稱(使用「.」)來存取 PropertyResourceBundles。
「default_behavior_example」><strong>範例:</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」檔案為非抽象子類別,「.properties」檔案為語法正確的子類別 ResourceBundle )。 預設地點為 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><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><tr th><scope = “row”>Locale(“de”, “DE”)</th><td>MyResources_en.properties, parent MyResources.class</td></tr<>tr scope tr><th=“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 版本中加入。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
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 文件 java.util.ResourceBundle.getBundle(java.lang.String)。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
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
類別載入器到 Load Resource
- control
- ResourceBundle.Control
控制存取序列的控制
傳回
為指定基地名稱與預設地點的資源包
- 屬性
備註
Java 文件 java.util.ResourceBundle.getBundle(java.lang.String)。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。