java.lang.Object java.util.spi.LocaleServiceProvider
public abstract class LocaleServiceProvider
此类是所有与语言环境有关的服务提供者接口(SPI)的超类。
与语言环境有关的服务提供者接口是与 java.text
和 java.util
包中与语言环境有关的类相对应的接口。利用这些接口,可以构造与语言环境有关的对象,可以获取这些包的本地名称。对于 Java 运行时环境本身支持的语言环境集以外的语言环境,java.text
和 java.util
包中与语言环境有关的工厂方法以及获取名称的方法使用提供者接口的实现来提供支持。
如果在多个配置文件中指定了一个特定的具体提供者类,或在同一配置文件中多次被指定,则忽略重复的指定。指定特定提供者的配置文件不必像提供者本身一样位于同一个 jar 文件或其他的分布式单元中。提供者必须可从最初为了定位配置文件而查询的类加载器访问,而不一定是加载文件的类加载器。
例如,DateFormatProvider
类的实现应该采用包含以下文件的 jar 文件的形式:
META-INF/services/java.text.spi.DateFormatProvider文件
java.text.spi.DateFormatProvider
应该具有如下的行:
com.foo.DateFormatProviderImpl
这是实现
DateFormatProvider
的类的完全限定类名称。
在需要支持请求的语言环境时,java.text
和 java.util
包中与语言环境有关的工厂方法和获取名称的方法调用服务提供者方法。这些方法先检查 Java 运行时环境本身是否支持请求的语言环境,如果是则使用它来支持。否则,这些方法对适当接口调用已安装提供者的 getAvailableLocales()
方法,以查找支持所请求语言环境的提供者。如果找到了这种提供者,则调用它的其他方法获取请求的对象或名称。如果 Java 运行时环境本身和已安装的提供者都不支持所请求的语言环境,那么使用空字符串替换语言环境的第一个非空的变量、国家/地区或语言字符串,以此构造一个回退语言环境,然后重新启动查找进程。如果变量包含一个或多个 '_',则使用取消最后一个 '_' 及其后面部分的新变量替换该变量,以此构造一个回退语言环境。即使发生回退,返回所请求对象或名称的方法仍然使用回退之前的原语言环境进行调用。为了保证此进程能够终止,Java 运行时环境必须支持所有与语言环境有关的服务的根语言环境。
允许名称提供者(但不是其他对象提供者)对某些名称请求,甚至对它们声称支持的语言环境(将其包括在 getAvailableLocales
的返回值中)环境返回 null。类似地,Java 运行时环境本身可能没有它所支持的所有语言环境的所有名称。这是因为其名称被请求的对象集可能很大,并可能随时变化,所以并非总是可以完全包括它们。如果 Java 运行时环境或提供者返回 null 而非名称,那么将按上述过程执行查找,就像该语言环境不受支持一样。
构造方法摘要 | |
---|---|
protected |
LocaleServiceProvider() 唯一的构造方法。 |
方法摘要 | |
---|---|
abstract Locale[] |
getAvailableLocales() 返回一个数组,它包含此语言环境服务提供者可以为其提供本地化对象或名称的所有语言环境。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
protected LocaleServiceProvider()
方法详细信息 |
---|
public abstract Locale[] getAvailableLocales()