|
Spec-Zone .ru
спецификации, руководства, описания, API
|
Эта опция позволяет плагину зависимых от локали данных и служб. Таким образом третьи стороны в состоянии обеспечить реализации большинства чувствительных к локали классов в java.text и java.util пакеты.
Реализация SPI (Интерфейс Поставщика услуг) основана на абстрактных классах и интерфейсах Java, которые реализуются поставщиком услуг. Во времени выполнения Java механизм загрузки class используется, чтобы динамически определить местоположение и загрузить классы, которые реализуют SPI.
Можно использовать чувствительный к локали SPI служб, чтобы обеспечить следующую локаль чувствительные реализации:
BreakIterator объектыCollator объектыLocale classDateFormat объектыDateFormatSymbol объектыNumberFormat объектыDecimalFormatSymbols объектыСоответствующие SPI содержатся оба в java.text.spi и в java.util.spi пакеты:
java.util.spi |
java.text.spi |
|
|
Например, если требуется обеспечить a NumberFormat объект для новой локали, необходимо реализовать java.text.spi.NumberFormatProvider class. Вы должны расширить этот class и реализовать его методы:
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() методы установленных провайдеров для соответствующего интерфейса, чтобы найти провайдера, который поддерживает требуемую локаль.