- java.lang.Object
-
- java.util.spi.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 Modules , ResourceBundleProvider Service Providers
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
AbstractResourceBundleProvider()
构造一个具有“java.properties”格式的AbstractResourceBundleProvider
。protected
AbstractResourceBundleProvider(String... formats)
构造一个AbstractResourceBundleProvider
与指定的formats
。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 ResourceBundle
getBundle(String baseName, Locale locale)
返回ResourceBundle
为给定baseName
和locale
。protected String
toBundleName(String baseName, Locale locale)
返回此提供程序提供的给定baseName
和locale
的包名称。
-
-
-
构造方法详细信息
-
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)
返回此提供商提供的给定baseName
和locale
的包名称。- 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
为给定baseName
和locale
。- Specified by:
-
getBundle
在接口ResourceBundleProvider
- Implementation Note:
-
此方法的默认实现将调用
toBundleName
方法来获取baseName
和locale
的软件包名称,并在该提供程序的模块中找到软件包名称的本地资源包。 它将只搜索在提供者构建时指定的格式。 - 参数
-
baseName
- 资源包的基础包名称,完全限定类名称。 -
locale
- 资源束应实例化的区域设置 - 结果
-
ResourceBundle
给定的baseName
和locale
,或null
如果没有资源包中发现 - 异常
-
NullPointerException
- 如果baseName
或locale
是null
-
UncheckedIOException
- 如果在资源束加载期间发生任何IO异常
-
-