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、</blockquote>getBundle(baseName, Locale.getDefault(), this.getClass().getClassLoader())
>
适用于 . 的 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、</blockquote>getBundle(baseName, locale, this.getClass().getClassLoader())
>
适用于 . 的 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
获取)生成一系列“候选项”><em>候选捆绑名称</em>。 如果指定的区域设置的语言、脚本、国家/地区和变体都是空字符串,则基名称是唯一的候选捆绑名称。 否则,从指定区域设置(语言、脚本、国家/地区和变体)的属性值生成候选区域设置列表,并追加到基名称。 通常,如下所示:
baseName + "_" + language + "_" + script + "_" + country + "_" + variant
baseName + "_" + language + "_" + script + "_" + country
baseName + "_" + language + "_" + script
baseName + "_" + language + "_" + country + "_" + variant
baseName + "_" + language + "_" + country
baseName + "_" + language
将省略最终组件为空字符串的候选捆绑名称以及下划线。 例如,如果国家/地区是空字符串,则会省略上述第二个和第五个候选捆绑包名称。 此外,如果脚本是空字符串,则省略包括脚本的候选名称。 例如,语言为“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>Note:</b> For some Locale
s, list of candidate bundle names contains extra names, or the order of bundle names is slightly modified. 有关详细信息,请参阅默认实现 Control#getCandidateLocales(String, Locale) getCandidateLocales
的说明。</blockquote>
getBundle
然后循环访问候选捆绑包名称,以查找可以 <对其进行>实例化</em> 的实际资源捆绑包的第一个捆绑包。 它使用默认控件 Control#getFormats getFormats
的方法,该方法为每个生成的名称生成两个捆绑名称,第一个是类名,第二个是属性文件名。 对于每个候选捆绑包名称,它会尝试创建资源捆绑包:
<ul><li>First,它尝试使用生成的类名加载类。 如果可以使用指定的类加载程序找到此类并加载此类,则与 ResourceBundle 兼容,可从 ResourceBundle 访问分配,并且可以实例化, getBundle
创建此类的新实例并将其用作 <em>结果资源捆绑包</em>。
<否则>, 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
的方法。 这将继续,直到名称列表已用尽,或者当前捆绑包已具有非 null 父级。
父链完成后,将返回捆绑包。
<b>注意:</b>getBundle
缓存实例化的资源捆绑包,并可能多次返回相同的资源捆绑实例。
<b>注意:</b>参数 baseName
应为完全限定的类名。 但是,为了与早期版本兼容,Java SE 运行时环境不会验证这一点,因此可以通过指定路径名称(使用“/”)而不是完全限定的类名(使用“.”)来访问 PropertyResourceBundle
s。
“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<>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 属性许可证中所述的术语使用。