Module  java.base
软件包  java.util.spi

Class AbstractResourceBundleProvider

  • All Implemented Interfaces:
    ResourceBundleProvider


    public abstract class AbstractResourceBundleProvider
    extends Object
    implements ResourceBundleProvider
    AbstractResourceBundleProvider是一个抽象类,为ResourceBundleProvider的提供程序实现类提供基本支持。

    资源束可以封装在一个或多个命名模块, 捆绑模块中 资源包的消费者是一个呼叫ResourceBundle.getBundle(String)的消息 为了使消费者模块加载由另一个模块提供的资源束“ com.example.app.MyResources ”,它将使用service loader机制。 必须定义名为“ com.example.app.MyResourcesProvider ”的服务接口,并且捆绑提供程序模块将提供“ com.example.app.MyResourcesProvider ”的实现类,如下所示:

       import com.example.app.MyResourcesProvider; class MyResourcesProviderImpl extends AbstractResourceBundleProvider implements MyResourcesProvider { protected String toBundleName(String baseName, Locale locale) { // return the bundle name per the naming of the resource bundle : } public ResourceBundle getBundle(String baseName, Locale locale) { // this module only provides bundles in french if (locale.equals(Locale.FRENCH)) { return super.getBundle(baseName, locale); } return null; } } 
    从以下版本开始:
    9
    另请参见:
    Resource Bundles in Named ModulesResourceBundleProvider Service Providers
    • 构造方法详细信息

      • AbstractResourceBundleProvider

        protected AbstractResourceBundleProvider​()
        构造一个具有“java.properties”格式的AbstractResourceBundleProvider 该构造函数相当于AbstractResourceBundleProvider("java.properties")
      • AbstractResourceBundleProvider

        protected AbstractResourceBundleProvider​(String... formats)
        构造一个AbstractResourceBundleProvider与指定的formats getBundle(String, Locale)方法查找给定的formats资源束。 formats必须是“java.class”或“java.properties”。
        参数
        formats - 用于加载资源束的格式
        异常
        NullPointerException - 如果给定的 formats为空
        IllegalArgumentException - 如果给定的 formats不是“java.class”或“java.properties”。
    • 方法详细信息

      • toBundleName

        protected String toBundleName​(String baseName,
                                      Locale locale)
        返回此提供商提供的给定 baseNamelocale的包名称。
        API Note:
        资源束提供者可以将其资源束打包在与资源束的基本名称相同的包中,如果包不与其他命名模块分割。 如果有多个捆绑提供商提供给定基本名称的资源束,则可以使用每个语言分组或每个区域分组打包资源束,以消除拆分包。

        例如,如果baseName"p.resources.Bundle"那么的资源包名称"p.resources.Bundle"Locale("ja", "", "XX")Locale("en")可能是"p.resources.ja.Bundle_ja_ _XX"p.resources.Bundle_en"分别

        该方法是从默认实现的getBundle(String, Locale)方法中调用的

        Implementation Note:
        该方法的默认实现与实现 ResourceBundle.Control.toBundleName(String, Locale)相同。
        参数
        baseName - 资源包的基本名称,一个完全限定的类名
        locale - 应为其加载资源束的区域设置
        结果
        资源束的包名称
      • getBundle

        public ResourceBundle getBundle​(String baseName,
                                        Locale locale)
        返回 ResourceBundle为给定 baseNamelocale
        Specified by:
        getBundle在接口 ResourceBundleProvider
        Implementation Note:
        此方法的默认实现将调用toBundleName方法来获取baseNamelocale的软件包名称,并在该提供程序的模块中找到软件包名称的本地资源包。 它将只搜索在提供者构建时指定的格式。
        参数
        baseName - 资源包的基础包名称,完全限定类名称。
        locale - 资源束应实例化的区域设置
        结果
        ResourceBundle给定的 baseNamelocale ,或 null如果没有资源包中发现
        异常
        NullPointerException - 如果 baseNamelocalenull
        UncheckedIOException - 如果在资源束加载期间发生任何IO异常