Java教程是针对JDK 8编写的。本页面中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
有关Java SE 9及后续版本中更新的语言功能的摘要,请参阅Java语言更改。
有关所有JDK版本的新功能、增强功能以及已删除或已弃用选项的信息,请参阅JDK发布说明。
此功能允许插入与区域相关的数据和服务。通过这种方式,第三方能够提供java.text
和java.util
包中大多数与区域有关的类的实现。
SPI(服务提供者接口)的实现基于抽象类和由服务提供者实现的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()
方法,以查找支持请求的区域设置的提供者。