ResourceBundle.GetBundle 方法

定义

重载

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 Locales, 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 运行时环境不会验证这一点,因此可以通过指定路径名称(使用“/”)而不是完全限定的类名(使用“.”)来访问 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<>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 中添加。

适用于 . 的 java.util.ResourceBundle.getBundle(java.lang.String, java.util.Locale, java.lang.ClassLoader)Java 文档

本页的某些部分是根据 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 属性许可证中所述的术语使用。

适用于