Spec-Zone .ru
спецификации, руководства, описания, API
|
public abstract class ZoneRulesProvider extends Object
Этот class управляет конфигурацией правил часового пояса. Статические методы обеспечивают общедоступный API, который может использоваться, чтобы управлять провайдерами. Абстрактные методы обеспечивают SPI, который позволяет правилам быть обеспеченными.
ZoneRulesProvider может быть установлен в экземпляре Платформы Java как классы расширения, то есть, файлы фляги, помещенные в любой из обычных каталогов расширения. Установленные провайдеры загружаются, используя средство загрузки поставщика услуг, определенное ServiceLoader
class. ZoneRulesProvider идентифицирует себя с названным конфигурационным файлом провайдера java.time.zone.ZoneRulesProvider
в каталоге ресурса META-INF/services
. Файл должен содержать строку, которая определяет полностью определенного конкретного zonerules-провайдера имя class. Провайдеры могут также быть сделаны доступными, добавляя их к пути class или регистрируя их непосредственно через registerProvider(java.time.zone.ZoneRulesProvider)
метод.
У виртуальной машины Java есть провайдер значения по умолчанию, который обеспечивает зональные правила для часовых поясов, определенных Базой данных Часового пояса IANA (TZDB). Если системное свойство java.time.zone.DefaultZoneRulesProvider
определяется тогда, это берется, чтобы быть полностью определенным именем конкретного ZoneRulesProvider class, который будет загружен как провайдер значения по умолчанию, используя систему загрузчик class. Если это системное свойство не будет определено, то провайдер системного значения по умолчанию будет загружен, чтобы служить провайдером значения по умолчанию.
Правила ищутся прежде всего зональным ID, как использующийся ZoneId
. Только зональные ID области могут использоваться, зональные ID смещения не используются здесь.
Правила часового пояса являются политическими, таким образом данные могут измениться в любое время. Каждый провайдер обеспечит последние правила для каждого зонального ID, но они могут также обеспечить историю как измененные правила.
Провайдеры должны гарантировать, что, как только правило было замечено приложением, правило должно продолжать быть доступным.
Провайдеры поощряются реализовать значимое toString
метод.
Много систем хотели бы обновить правила часового пояса динамически, не останавливая JVM. Когда исследовано подробно, это - сложная проблема. Провайдеры могут хотеть обрабатывать динамические обновления, однако провайдер значения по умолчанию не делает.
Модификатор | Конструктор и Описание |
---|---|
protected |
ZoneRulesProvider()
Конструктор.
|
Модификатор и Тип | Метод и Описание |
---|---|
static Set<String> |
getAvailableZoneIds()
Получает набор доступных зональных ID.
|
static ZoneRules |
getRules(String zoneId, boolean forCaching)
Получает правила для зонального ID.
|
static NavigableMap<String,ZoneRules> |
getVersions(String zoneId)
Получает историю правил для зонального ID.
|
protected boolean |
provideRefresh()
Метод SPI, чтобы обновить правила от базового провайдера данных.
|
protected abstract ZoneRules |
provideRules(String zoneId, boolean forCaching)
Метод SPI, чтобы получить правила для зонального ID.
|
protected abstract NavigableMap<String,ZoneRules> |
provideVersions(String zoneId)
Метод SPI, чтобы получить историю правил для зонального ID.
|
protected abstract Set<String> |
provideZoneIds()
Метод SPI, чтобы получить доступные зональные ID.
|
static boolean |
refresh()
Обновляет правила от базового провайдера данных.
|
static void |
registerProvider(ZoneRulesProvider provider)
Регистрируется зона управляет провайдером.
|
public static Set<String> getAvailableZoneIds()
Эти ID являются строковой формой a ZoneId
.
public static ZoneRules getRules(String zoneId, boolean forCaching)
Это возвращает последние доступные правила для зонального ID.
Этот метод полагается на файлы провайдера данных часового пояса, которые конфигурируются. Они загружаются, используя a ServiceLoader
.
Кэширующийся флаг разрабатывается, чтобы позволить реализациям провайдера предотвращать правила, кэшируемые в ZoneId
. При нормальных обстоятельствах кэширование зональных правил является очень требуемым, поскольку оно обеспечит большую производительность. Однако, есть вариант использования, где кэширование не было бы требуемым, см. provideRules(java.lang.String, boolean)
.
zoneId
- зональный ID как определено ZoneId
, не нульforCaching
- запрашиваются ли правила для того, чтобы кэшироваться, истина, если возвращенные правила будут кэшироваться ZoneId
, ложь, если они будут возвращены пользователю, не кэшируясь в ZoneId
forCaching
истина, и это - динамический провайдер, который хочет предотвратить кэширование в ZoneId
, иначе не нульZoneRulesException
- если правила не могут быть получены для зонального IDpublic static NavigableMap<String,ZoneRules> getVersions(String zoneId)
Часовые пояса определяются правительствами и изменением часто. Этот метод позволяет приложениям находить историю изменений к правилам для единственного зонального ID. Карта включается строкой, которая является строкой версии, связанной с правилами.
Точное значение и формат версии являются определенным провайдером. Версия должна следовать за лексикографическим порядком, таким образом возвращенная карта будет порядком от самых старых известных правил до новейших доступных правил. Значение по умолчанию группа 'TZDB' использует нумерацию версии, состоящую из года, сопровождаемого буквой, такой как '2009e' или '2012f'.
Реализации должны обеспечить результат для каждого допустимого зонального ID, однако они не должны обеспечить историю правил. Таким образом карта будет всегда содержать один элемент, и будет только содержать больше чем один элемент, если историческая информация о правиле будет доступна.
zoneId
- зональный ID как определено ZoneId
, не нульZoneRulesException
- если история не может быть получена для зонального IDpublic static void registerProvider(ZoneRulesProvider provider)
Это добавляет нового провайдера к в настоящий момент доступным. Провайдер предоставляет правила для одного или более зональных ID. Провайдер не может быть зарегистрирован, если он предоставляет зональный ID, который был уже зарегистрирован. См. примечания по ID часового пояса в ZoneId
, особенно раздел по использованию понятия "группы", чтобы сделать уникальные ID.
Чтобы гарантировать целостность часовых поясов, уже создаваемых, нет никакого способа вычеркнуть из списка провайдеров.
provider
- провайдер, чтобы зарегистрировать, не нульZoneRulesException
- если зональный ID уже регистрируетсяpublic static boolean refresh()
Этот метод позволяет приложению запрашивать, чтобы провайдеры проверили на любые обновления к обеспеченным правилам. После вызова этого метода смещение сохранено в любом ZonedDateTime
может быть недопустимым для зонального ID.
Динамическое обновление правил является сложной проблемой, и большинство приложений не должно использовать этот метод или динамические правила. Чтобы достигнуть динамических правил, реализация провайдера должна будет быть записана согласно спецификации этого class. Кроме того, экземпляры ZoneRules
не должен кэшироваться в приложении, поскольку они станут устарелыми. Однако, булев флаг на provideRules(String, boolean)
позволяет реализациям провайдера управлять кэшированием ZoneId
, потенциально гарантируя, что все объекты в системе видят новые правила. Отметьте, что, вероятно, будет стоимость в производительности динамического провайдера правил. Отметьте также, что никакой динамический провайдер правил не находится в этой спецификации.
ZoneRulesException
- если ошибка происходит во время обновленияprotected abstract Set<String> provideZoneIds()
Это получает ID что это ZoneRulesProvider
обеспечивает. Провайдер должен обеспечить данные по крайней мере для одного зонального ID.
Возвращенные зональные ID остаются доступными и допустимыми для времени жизни приложения. Динамический провайдер может увеличить набор ID, поскольку больше данных становится доступным.
ZoneRulesException
- если проблема происходит, обеспечивая IDprotected abstract ZoneRules provideRules(String zoneId, boolean forCaching)
Это загружает правила для указанного зонального ID. Реализация провайдера должна проверить этого, зональный ID допустим и доступен, бросая a ZoneRulesException
если это не. Результат метода в допустимом случае зависит от кэширующегося флага.
Если реализация провайдера не является динамичной, то результатом метода должно быть непустое множество правил, выбранных ID.
Если реализация провайдера является динамичной, то флаг дает опцию препятствования возвращенным правилам кэшироваться в ZoneId
. Когда флаг является истиной, провайдеру разрешают возвратить нуль, где нуль будет препятствовать правилам кэшироваться в ZoneId
. Когда флаг является ложью, провайдер должен возвратить ненулевые правила.
zoneId
- зональный ID как определено ZoneId
, не нульforCaching
- запрашиваются ли правила для того, чтобы кэшироваться, истина, если возвращенные правила будут кэшироваться ZoneId
, ложь, если они будут возвращены пользователю, не кэшируясь в ZoneId
forCaching
истина, и это - динамический провайдер, который хочет предотвратить кэширование в ZoneId
, иначе не нульZoneRulesException
- если правила не могут быть получены для зонального IDprotected abstract NavigableMap<String,ZoneRules> provideVersions(String zoneId)
Это возвращает карту исторических правил, включенных строкой версии. Точное значение и формат версии являются определенным провайдером. Версия должна следовать за лексикографическим порядком, таким образом возвращенная карта будет порядком от самых старых известных правил до новейших доступных правил. Значение по умолчанию группа 'TZDB' использует нумерацию версии, состоящую из года, сопровождаемого буквой, такой как '2009e' или '2012f'.
Реализации должны обеспечить результат для каждого допустимого зонального ID, однако они не должны обеспечить историю правил. Таким образом карта будет содержать по крайней мере один элемент, и будет только содержать больше чем один элемент, если историческая информация о правиле будет доступна.
Возвращенные версии остаются доступными и допустимыми для времени жизни приложения. Динамический провайдер может увеличить набор версий, поскольку больше данных становится доступным.
zoneId
- зональный ID как определено ZoneId
, не нульZoneRulesException
- если история не может быть получена для зонального IDprotected boolean provideRefresh()
Этот метод обеспечивает возможность для провайдера, чтобы динамически перепроверить базового провайдера данных, чтобы найти последние правила. Это могло использоваться, чтобы загрузить новые правила, не останавливая JVM. Динамическое поведение является полностью дополнительным, и большинство провайдеров не поддерживает его.
Эта реализация возвращает false.
ZoneRulesException
- если ошибка происходит во время обновления
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92