Java教程是针对JDK 8编写的。本页面描述的示例和实践不利用后续版本中引入的改进,并且可能使用不再可用的技术。
请参阅Java语言更改了解Java SE 9及以后版本中更新的语言特性的摘要。
请参阅JDK发布说明了解有关所有JDK版本的新功能、增强功能和已删除或已弃用选项的信息。
国际化的服务提供商可以插入与区域相关的数据和服务。由于可以插入区域相关的数据和服务,第三方可以提供java.text
和java.util
包中大多数与区域相关的类的实现。
服务是一组提供访问特定应用程序功能或特性的编程接口和类。服务提供商接口(SPI)是服务定义的一组公共接口和抽象类。服务提供商实现SPI。服务提供商使您能够创建可扩展的应用程序,可以在不修改其原始代码库的情况下进行扩展。您可以通过新的插件或模块增强其功能。有关服务提供商和可扩展应用程序的更多信息,请参阅创建可扩展应用程序。
您可以使用国际化的服务提供商来提供以下区域相关类的自定义实现:
BreakIterator
对象Collator
对象Locale
类的语言代码、国家代码和变体名称DateFormat
对象DateFormatSymbols
对象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
方法,以查找支持请求的区域设置的提供程序。
有关如何使用服务提供程序进行国际化的详细示例,请参阅将自定义资源包安装为扩展。此部分向你展示如何实现ResourceBundleControlProvider
接口,使你能够在不对应用程序源代码进行任何其他更改的情况下使用任何自定义ResourceBundle.Control
类。