- 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”,它将使用service loader机制。 必须定义名为“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"); } // 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
- 另请参见:
- Resource Bundles and Named Modules
-
-
构造方法摘要
构造方法 变量 构造器 描述 protectedAbstractResourceBundleProvider()使用“java.properties”格式构造AbstractResourceBundleProvider。protectedAbstractResourceBundleProvider(String... formats)构造一个AbstractResourceBundleProvider具有指定formats。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 ResourceBundlegetBundle(String baseName, Locale locale)返回ResourceBundle对于给定的baseName和locale。protected StringtoBundleName(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异常
-
-