区域敏感服务 SPI
此功能启用了与语言环境相关的数据和服务的插件。这样,第三方就可以在java.text
和java.util
包中提供大多数对语言环境敏感的类的实现。
SPI *(服务提供商interface)*的实现基于服务提供商实现的抽象类和 Java interface。在运行时,Java 类加载机制用于动态定位和加载实现 SPI 的类。
您可以使用对语言环境敏感的服务 SPI 提供以下对语言环境敏感的实现:
-
BreakIterator
个对象 -
Collator
个对象 -
Locale
类的语言代码,国家/地区代码和变体名称 -
timezone名称
-
Currency symbols
-
DateFormat
个对象 -
DateFormatSymbol
个对象 -
NumberFormat
个对象 -
DecimalFormatSymbols
个对象
相应的 SPI 包含在java.text.spi
和java.util.spi
软件包中:
java.util.spi | java.text.spi |
CurrencyNameProvider | |
LocaleServiceProvider TimeZoneNameProvider CalendarDataProvider | BreakIteratorProvider CollatorProvider DateFormatProvider DateFormatSymbolsProvider DecimalFormatSymbolsProvider NumberFormatProvider |
例如,如果您想为新的语言环境提供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 运行时环境是否支持请求的语言环境。如果是这样,他们会使用该支持。否则,这些方法将为适当的interface调用已安装的提供程序的getAvailableLocales()
方法,以查找支持所请求的语言环境的提供程序。