public abstract class LocaleServiceProvider extends Object
这是所有现场敏感的服务提供者接口的超类(SPI)。
现场敏感的服务提供者接口接口对应的区域敏感类的java.text
和java.util
包。该接口使区域设置敏感对象的构造和这些包的本地化名称的检索。现场敏感的工厂方法在java.text
和java.util
包名称检索使用的提供程序接口的实现提供支持的场所以外的区域设置的支持java运行环境。
如果一个特定的具体的提供程序类被命名在一个以上的配置文件中,或在相同的配置文件中被命名为一次,那么重复将被忽略。配置文件命名一个特定的提供者不需要在同一个罐子文件或其他分发单元作为提供者本身。该提供程序必须从最初查询的同一类装载器中查找到定位配置文件;这不一定是加载该文件的类装载器。
例如,DateFormatProvider
类的实现应该采取一个JAR文件包含文件的形式:
META-INF /服务/ java.text.spi.dateformatprovider和文件
java.text.spi.DateFormatProvider
应该行如:
com.foo.DateFormatProviderImpl
是完全限定类名的类实现
DateFormatProvider
。
现场敏感的工厂方法在java.text
和java.util
包调用服务提供者的方法名称检索时需要支持所请求的区域设置。该方法首先检查是否有java运行环境本身支持请求的区域,如果使用支持。否则,他们需要找到一个支持要求设置适当的接口安装商isSupportedLocale
方法。如果找到这样的一个提供程序,则调用它的其他方法来获取所请求的对象或名称。当检查现场支持, locale's extensions默认的忽略。(如果现场的延伸,也应检查,该isSupportedLocale
方法必须重写。)如果没有java运行环境本身也不是一个安装程序支持所请求的区域设置的方法,通过一个列表中的候选地点,重复每个可用性检查直到找到一个匹配。用于创建一个列表的候选地点的同一ResourceBundle
默认情况下使用的算法(详见getCandidateLocales
)。即使一个区域从候选人名单中解决,方法返回请求的对象或名称与原始请求的区域包括Locale
扩展调用。java运行时环境必须支持根现场所有现场敏感的服务,为了保证这一过程终止。
供应商名称(而不是其他对象的提供者)可以换取一些名称无效请求甚至地点,他们声称支持包括他们的返回值的getAvailableLocales
。同样,java运行环境本身可能没有所有的场所,它支持所有的名字。这是因为所请求的对象的集合可以是大的,随着时间的推移而变化,因此,它并不总是可行的覆盖他们完全。如果java运行环境或提供者返回null,而不是一个名称,查找将如上所述如果现场不被支持。
从jdk8,现场敏感服务的搜索顺序可以用“java配置。现场。供应商“系统属性。此系统属性声明用户的首选顺序,用于查找由逗号分隔的区域设置敏感服务。只有在读的java运行时启动,所以系统的电话后。setproperty()不会影响秩序。
例如,如果下面是属性中指定的:
java。现场。商= SPI,JRE“SPI”代表现场敏感的服务在安装SPI供应商实施,和“嘉园”代表现场敏感服务的java运行环境,在SPI供应商现场敏感服务抬头第一。
还有其他两个可能的本地化服务商,即“cldr”这是一个提供基于Unicode协会的CLDR Project,和“主机”这是一个供应商,反映了底层操作系统的用户自定义设置。这两个供应商可能不可用,这取决于java运行时环境的实现。指定“JRE,SPI是默认行为是相同的,这与之前的版本相兼容的。
Modifier | Constructor and Description |
---|---|
protected |
LocaleServiceProvider()
唯一的构造函数。
|
Modifier and Type | Method and Description |
---|---|
abstract Locale[] |
getAvailableLocales()
返回一个数组的所有区域,这个区域的服务提供商可以提供本地化的对象或名字。
|
boolean |
isSupportedLocale(Locale locale)
返回
true 如果给定的
locale 的现场服务提供商支持。
|
protected LocaleServiceProvider()
public abstract Locale[] getAvailableLocales()
getAvailableLocales()
值,如
DateFormat.getAvailableLocales()
。
此方法返回的数组中不应该包括两个或两个以上的Locale
对象扩展不同的只是。
public boolean isSupportedLocale(Locale locale)
true
如果给定的
locale
的现场服务提供商支持。给定的
locale
可能包含
extensions应考虑支持的测定。
默认的实现返回true
如果给定的locale
等于任何可用的Locale
s返回getAvailableLocales()
忽视在给定的locale
和可用的区域设置任何扩展。混凝土现场服务提供者应重写此方法,如果这些实现Locale
扩展意识。例如,DecimalFormatSymbolsProvider
实现将需要检查在给定的locale
扩展是否编号指定系统可以支持。然而,CollatorProvider
实现可能不被任何特定的编号系统的影响,在这种情况下,对于编号系统应该忽略扩展。
locale
-
Locale
进行测试
true
如果给定的
locale
由供应商支持的;
false
否则。
NullPointerException
-如果给定的
locale
是
null
Locale.hasExtensions()
,
Locale.stripExtensions()
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.