Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
此功能启用与语言环境相关的数据和服务的插件。通过这种方式,第三方能够在 java.text
和 java.util
包中提供大多数语言环境敏感类的实现。
SPI (Service Provider Interface (服务提供者接口)) 的实现基于由服务提供者实现的抽象类和 Java 接口。在运行时,Java 类加载机制用于动态定位和加载实现 SPI 的类。
你可以使用语言环境敏感服务 SPI 来提供以下语言环境敏感实现:
BreakIterator
对象Collator
对象Locale
类的语言代码,国家/地区代码和变体名称DateFormat
对象DateFormatSymbol
对象NumberFormat
对象DecimalFormatSymbols
对象相应的 SPI 包含在 java.text.spi
和 java.util.spi
包中:
java.util.spi |
java.text.spi |
|
|
例如,如果要为新语言环境提供 NumberFormat
对象,则必须实现 java.text.spi.NumberFormatProvider
类。你需要继承此类并实现其方法:
getCurrencyInstance(Locale locale)
getIntegerInstance(Locale locale)
getNumberInstance(Locale locale)
getPercentInstance(Locale locale)
Locale loc = new Locale("da", "DK"); NumberFormat nf = NumberFormatProvider.getNumberInstance(loc);
这些方法首先检查 Java 运行时环境是否支持所请求的语言环境;如果是这样,他们会使用这种支持。否则,这些方法会调用已安装提供程序的 getAvailableLocales()
方法,以找到支持所请求语言环境的提供程序。