java.lang.Object
java.util.spi.AbstractResourceBundleProvider
- 所有已实现的接口:
-
ResourceBundleProvider
public abstract class AbstractResourceBundleProvider extends Object implements ResourceBundleProvider
AbstractResourceBundleProvider
是一个抽象类,为ResourceBundleProvider
的提供者实现类提供基本支持。
资源包可以打包在一个或多个命名模块中,服务提供者模块。资源包的消费者是调用ResourceBundle.getBundle(String)
的调用方。为了使消费者模块能够加载由另一个模块提供的资源包"com.example.app.MyResources
",它将使用服务加载器机制。必须定义一个名为"com.example.app.spi.MyResourcesProvider
"的服务接口,而服务提供者模块将提供一个实现类"com.example.app.spi.MyResourcesProvider
"如下:
详情请参阅import com.example.app.spi.MyResourcesProvider; class MyResourcesProviderImpl extends AbstractResourceBundleProvider implements MyResourcesProvider { public MyResourcesProviderImpl() { super("java.properties"); } // 此提供者将资源包映射到每种语言的包 protected String toBundleName(String baseName, Locale locale) { return "p." + locale.getLanguage() + "." + baseName; } public ResourceBundle getBundle(String baseName, Locale locale) { // 此模块仅提供法语资源包 if (locale.equals(Locale.FRENCH)) { return super.getBundle(baseName, locale); } // 否则返回null return null; } }
ResourceBundleProvider
。
- 自 JDK 9 起:
- 9
- 参见:
-
Constructor Summary
ModifierConstructorDescriptionprotected
用"java.properties"格式构造一个AbstractResourceBundleProvider
。protected
AbstractResourceBundleProvider
(String... formats) 用指定的formats
构造一个AbstractResourceBundleProvider
。 -
Method Summary
Modifier and TypeMethodDescription返回给定baseName
和locale
的ResourceBundle
。protected String
toBundleName
(String baseName, Locale locale) 返回此提供者提供的给定baseName
和locale
的包名称。
-
Constructor Details
-
AbstractResourceBundleProvider
protected AbstractResourceBundleProvider()用"java.properties"格式构造一个AbstractResourceBundleProvider
。此构造函数等效于AbstractResourceBundleProvider("java.properties")
。 -
AbstractResourceBundleProvider
用指定的formats
构造一个AbstractResourceBundleProvider
。getBundle(String, Locale)
方法查找给定formats
的资源包。formats
必须为"java.class"或"java.properties"。- 参数:
-
formats
- 用于加载资源包的格式 - 抛出:
-
NullPointerException
- 如果给定的formats
为null -
IllegalArgumentException
- 如果给定的formats
不是"java.class"或"java.properties"。
-
-
Method Details
-
toBundleName
返回此提供者提供的给定baseName
和locale
的包名称。- API 注释:
-
如果资源包提供者的资源包与资源包的基本名称相同且该包未分割到其他命名模块中,则资源包可以打包在相同的包中。如果有多个提供者提供给定基本名称的资源包,则可以将资源包打包为每种语言分组或每个区域分组以消除分割包。
例如,如果
baseName
为"p.resources.Bundle"
,则Locale("ja", "", "XX")
和Locale("en")
的资源包名称分别可以为"p.resources.ja.Bundle_ja_ _XX"
和"p.resources.Bundle_en"
。此方法从
getBundle(String, Locale)
方法的默认实现中调用。 - 实现注释:
-
此方法的默认实现与
ResourceBundle.Control.toBundleName(String, Locale)
的实现相同。 - 参数:
-
baseName
- 资源包的基本名称,完全限定的类名 -
locale
- 应加载资源包的区域设置 - 返回:
- 资源包的包名称
-
getBundle
返回给定baseName
和locale
的ResourceBundle
。- 指定者:
-
getBundle
在接口ResourceBundleProvider
- 实现注释:
-
此方法的默认实现调用
toBundleName
方法以获取baseName
和locale
的包名称,并在此提供者的模块中查找该包名称的资源包。它仅搜索构造此提供者时指定的格式。 - 参数:
-
baseName
- 资源包的基本包名称,完全限定的类名。 -
locale
- 应实例化资源包的区域设置 - 返回:
-
给定
baseName
和locale
的ResourceBundle
,如果未找到资源包则返回null
- 抛出:
-
NullPointerException
- 如果baseName
或locale
为null
-
UncheckedIOException
- 如果在加载资源包期间发生任何IO异常
-