java.lang.Object
java.util.spi.AbstractResourceBundleProvider
- 所有已实现的接口:
ResourceBundleProvider
public abstract class AbstractResourceBundleProvider extends Object implements ResourceBundleProvider
AbstractResourceBundleProvider 是一个抽象类,为ResourceBundleProvider 的提供者实现类提供基本支持。
资源包可以打包在一个或多个命名模块中,service provider modules。资源包的 consumer 是调用 ResourceBundle.getBundle(String) 的那个。为了让消费者模块加载另一个模块提供的资源包“com.example.app.MyResources”,它将使用服务加载器机制。必须定义名为“com.example.app.spi.MyResourcesProvider”的服务接口,service provider module 将提供“com.example.app.spi.MyResourcesProvider”的实现类,如下所示:
有关详细信息,请参阅import com.example.app.spi.MyResourcesProvider; class MyResourcesProviderImpl extends AbstractResourceBundleProvider implements MyResourcesProvider { public MyResourcesProviderImpl() { super("java.properties"); } // this provider maps the resource bundle to per-language package protected String toBundleName(String baseName, Locale locale) { return "p." + locale.getLanguage() + "." + baseName; } public ResourceBundle getBundle(String baseName, Locale locale) { // this module only provides bundles in French if (locale.equals(Locale.FRENCH)) { return super.getBundle(baseName, locale); } // otherwise return null return null; } }
ResourceBundleProvider 。
- 自从:
- 9
- 参见:
-
构造方法总结
构造方法修饰符构造方法描述protected用“java.properties”格式构造一个AbstractResourceBundleProvider。protectedAbstractResourceBundleProvider(String... formats) 用指定的formats构造一个AbstractResourceBundleProvider。 -
方法总结
修饰符和类型方法描述为给定的baseName和locale返回一个ResourceBundle。protected StringtoBundleName(String baseName, Locale locale) 返回此提供商提供的给定baseName和locale的包名称。
-
构造方法详细信息
-
AbstractResourceBundleProvider
protected AbstractResourceBundleProvider()用“java.properties”格式构造一个AbstractResourceBundleProvider。此构造函数等效于AbstractResourceBundleProvider("java.properties")。 -
AbstractResourceBundleProvider
用指定的formats构造一个AbstractResourceBundleProvider。getBundle(String, Locale)方法查找给定formats的资源包。formats必须是“java.class”或“java.properties”。- 参数:
formats- 用于加载资源包的格式- 抛出:
NullPointerException- 如果给定的formats为空IllegalArgumentException- 如果给定的formats不是“java.class”或“java.properties”。
-
-
方法详情
-
toBundleName
返回此提供商提供的给定baseName和locale的包名称。- API 注意:
-
如果包没有在其他命名模块之间拆分,资源包提供者可以将其资源包打包在与资源包的基本名称相同的包中。如果有多个包提供者提供给定基本名称的资源包,则资源包可以按语言分组或按区域分组打包,以消除拆分包。
例如,如果
baseName为"p.resources.Bundle",则Locale("ja", "", "XX")和Locale("en")的"p.resources.Bundle"的资源包名称可能分别为"p.resources.ja.Bundle_ja_ _XX"和"p.resources.Bundle_en"。此方法是从
getBundle(String, Locale)方法的默认实现中调用的。 - 实现注意事项:
-
此方法的默认实现与
ResourceBundle.Control.toBundleName(String, Locale)的实现相同。 - 参数:
baseName- 资源包的基本名称,一个完全限定的类名locale- 应为其加载资源包的locale- 返回:
- 资源包的包名称
-
getBundle
为给定的baseName和locale返回一个ResourceBundle。- 指定者:
getBundle在接口ResourceBundleProvider中- 实现注意事项:
-
该方法的默认实现调用
toBundleName方法获取baseName和locale的bundle名称,并在本provider的模块中找到本地bundle名称的资源包。它只会搜索构建此提供程序时指定的格式。 - 参数:
baseName- 资源包的基本包名称,一个完全限定的类名。locale- 应该为其实例化资源包的locale- 返回:
-
给定的
baseName和locale的ResourceBundle,如果没有找到资源包,则为null - 抛出:
NullPointerException- 如果baseName或locale是nullUncheckedIOException- 如果在资源包加载期间发生任何 IO 异常
-