|
Spec-Zone .ru
спецификации, руководства, описания, API
|
@FunctionalInterface public interface TemporalQuery<R>
Запросы являются ключевым инструментом для того, чтобы извлечь информацию из временных объектов. Они существуют, чтобы воплотить процесс запросов, разрешая разные подходы, согласно шаблону разработки стратегии. Примерами мог бы быть запрос, который проверяет, является ли дата днем до 29-ого февраля в високосный год, или вычисляет число дней к Вашему следующему дню рождения.
TemporalField интерфейс обеспечивает другой механизм для того, чтобы он запросил временные объекты. Тот интерфейс ограничивается возвратом a long. В отличие от этого, запросы могут возвратить любой тип.
Есть два эквивалентных способа использовать a TemporalQuery. Первое должно вызвать метод на этот интерфейс непосредственно. Второе должно использовать TemporalAccessor.query(TemporalQuery):
// these two lines are equivalent, but the second approach is recommended temporal = thisQuery.queryFrom(temporal); temporal = temporal.query(thisQuery);Рекомендуется использовать второй подход,
query(TemporalQuery), поскольку это является намного более четким, чтобы читать в коде. Наиболее распространенные реализации являются ссылками метода, такой как LocalDate::from и ZoneId::from. Дополнительные общие реализации обеспечиваются в этом интерфейсе как статические методы.
| Модификатор и Тип | Метод и Описание |
|---|---|
static TemporalQuery<Chronology> |
chronology()
Запрос для
Chronology. |
static TemporalQuery<LocalDate> |
localDate()
Запрос для
LocalDate возврат нуля, если не найденный. |
static TemporalQuery<LocalTime> |
localTime()
Запрос для
LocalTime возврат нуля, если не найденный. |
static TemporalQuery<ZoneOffset> |
offset()
Запрос для
ZoneOffset возврат нуля, если не найденный. |
static TemporalQuery<TemporalUnit> |
precision()
Запрос для самого маленького поддерживаемого модуля.
|
R |
queryFrom(TemporalAccessor temporal)
Запрашивает указанный временный объект.
|
static TemporalQuery<ZoneId> |
zone()
Снисходительный запрос для
ZoneId, отступание к ZoneOffset. |
static TemporalQuery<ZoneId> |
zoneId()
Строгий запрос для
ZoneId. |
R queryFrom(TemporalAccessor temporal)
Это запрашивает указанный временный объект возвратить объект, используя логику, инкапсулировавшую в реализации class. Примерами мог бы быть запрос, который проверяет, является ли дата днем до 29-ого февраля в високосный год, или вычисляет число дней к Вашему следующему дню рождения.
Есть два эквивалентных способа использовать этот метод. Первое должно вызвать этот метод непосредственно. Второе должно использовать TemporalAccessor.query(TemporalQuery):
// these two lines are equivalent, but the second approach is recommended temporal = thisQuery.queryFrom(temporal); temporal = temporal.query(thisQuery);Рекомендуется использовать второй подход,
query(TemporalQuery), поскольку это является намного более четким, чтобы читать в коде.TemporalAccessor определить результат. Входной объект не должен быть изменен. Ввод временный объект может быть в календарной системе кроме ISO. Реализации могут хотеть документировать совместимость с другими календарными системами, или отклонять не-ISO временные объекты querying the chronology.
Этот метод можно вызвать от многократных потоков параллельно. Это должно быть ориентировано на многопотоковое исполнение когда вызвано.
temporal - временный объект запросить, не нульDateTimeException - если неспособный запрашиватьArithmeticException - если числовое переполнение происходитstatic TemporalQuery<ZoneId> zoneId()
ZoneId. Это запрашивает a TemporalAccessor для зоны. Зона только возвращается, если разовое датой концептуально содержит a ZoneId. Это не будет возвращено, если разовое датой только концептуально будет иметь ZoneOffset. Таким образом a ZonedDateTime возвратит результат getZone(), но OffsetDateTime возвратит нуль.
В большинстве случаев приложения должны использовать zone() поскольку этот запрос слишком строг.
Следствие реализации классов JDK TemporalAccessor следующие:
LocalDate нуль возвратов
LocalTime нуль возвратов
LocalDateTime нуль возвратов
ZonedDateTime возвращает связанную зону
OffsetTime нуль возвратов
OffsetDateTime нуль возвратов
ChronoLocalDate нуль возвратов
ChronoLocalDateTime нуль возвратов
ChronoZonedDateTime возвращает связанную зону
Era нуль возвратов
DayOfWeek нуль возвратов
Month нуль возвратов
Year нуль возвратов
YearMonth нуль возвратов
MonthDay нуль возвратов
ZoneOffset нуль возвратов
Instant нуль возвратов
static TemporalQuery<Chronology> chronology()
Chronology. Это запрашивает a TemporalAccessor для хронологии. Если цель TemporalAccessor представляет дату, или часть даты, тогда это должно возвратить хронологию, в которой выражается дата. В результате этого определения, объекты только время представления, такой как LocalTime, возвратит нуль.
Следствие реализации классов JDK TemporalAccessor следующие:
LocalDate возвраты IsoChronology.INSTANCE
LocalTime нуль возвратов (не представляет дату),
LocalDateTime возвраты IsoChronology.INSTANCE
ZonedDateTime возвраты IsoChronology.INSTANCE
OffsetTime нуль возвратов (не представляет дату),
OffsetDateTime возвраты IsoChronology.INSTANCE
ChronoLocalDate возвращает связанную хронологию
ChronoLocalDateTime возвращает связанную хронологию
ChronoZonedDateTime возвращает связанную хронологию
Era возвращает связанную хронологию
DayOfWeek нуль возвратов (совместно использованный через хронологии)
Month возвраты IsoChronology.INSTANCE
Year возвраты IsoChronology.INSTANCE
YearMonth возвраты IsoChronology.INSTANCE
MonthDay нуль возвратов IsoChronology.INSTANCE
ZoneOffset нуль возвратов (не представляет дату),
Instant нуль возвратов (не представляет дату),
Метод Chronology.from(TemporalAccessor) может использоваться в качестве a TemporalQuery через ссылку метода, Chronology::from. Тот метод эквивалентен этому запросу, за исключением того, что это выдает исключение, если хронология не может быть получена.
static TemporalQuery<TemporalUnit> precision()
Это запрашивает a TemporalAccessor для точности времени. Если цель TemporalAccessor представляет непротиворечивое или разовое датой полное, дата или время тогда, это должно возвратить наименьшую точность, фактически поддерживаемую. Отметьте это поля такой как NANO_OF_DAY и NANO_OF_SECOND определяются, чтобы всегда возвратить игнорирование точности, таким образом это - единственный способ найти фактический самый маленький поддерживаемый модуль. Например, были GregorianCalendar реализовывать TemporalAccessor это возвратило бы точность MILLIS.
Следствие реализации классов JDK TemporalAccessor следующие:
LocalDate возвраты DAYS
LocalTime возвраты NANOS
LocalDateTime возвраты NANOS
ZonedDateTime возвраты NANOS
OffsetTime возвраты NANOS
OffsetDateTime возвраты NANOS
ChronoLocalDate возвраты DAYS
ChronoLocalDateTime возвраты NANOS
ChronoZonedDateTime возвраты NANOS
Era возвраты ERAS
DayOfWeek возвраты DAYS
Month возвраты MONTHS
Year возвраты YEARS
YearMonth возвраты MONTHS
MonthDay нуль возвратов (не представляет полную дату или время),
ZoneOffset нуль возвратов (не представляет дату или время),
Instant возвраты NANOS
static TemporalQuery<ZoneId> zone()
ZoneId, отступание к ZoneOffset. Это запрашивает a TemporalAccessor для зоны. Это сначала пытается получить зону, используя zoneId(). Если это не находится, это пытается получить offset(). Таким образом a ZonedDateTime возвратит результат getZone(), в то время как OffsetDateTime возвратит результат getOffset().
В большинстве случаев приложения должны использовать этот запрос, а не #zoneId().
Метод ZoneId.from(TemporalAccessor) может использоваться в качестве a TemporalQuery через ссылку метода, ZoneId::from. Тот метод эквивалентен этому запросу, за исключением того, что это выдает исключение, если зона не может быть получена.
static TemporalQuery<ZoneOffset> offset()
ZoneOffset возврат нуля, если не найденный. Это возвращает a TemporalQuery это может использоваться, чтобы запросить временный объект для смещения. Запрос возвратит нуль, если временный объект не может предоставить смещение.
Реализация запроса исследует OFFSET_SECONDS поле и использование это, чтобы создать a ZoneOffset.
Метод ZoneOffset.from(TemporalAccessor) может использоваться в качестве a TemporalQuery через ссылку метода, ZoneOffset::from. Этот запрос и ZoneOffset::from возвратит тот же самый результат, если временный объект будет содержать смещение. Если временный объект не будет содержать смещение, то ссылка метода выдаст исключение, тогда как этот запрос возвратит нуль.
static TemporalQuery<LocalDate> localDate()
LocalDate возврат нуля, если не найденный. Это возвращает a TemporalQuery это может использоваться, чтобы запросить временный объект для локальной даты. Запрос возвратит нуль, если временный объект не может предоставить локальную дату.
Реализация запроса исследует EPOCH_DAY поле и использование это, чтобы создать a LocalDate.
Метод ZoneOffset.from(TemporalAccessor) может использоваться в качестве a TemporalQuery через ссылку метода, LocalDate::from. Этот запрос и LocalDate::from возвратит тот же самый результат, если временный объект будет содержать дату. Если временный объект не будет содержать дату, то ссылка метода выдаст исключение, тогда как этот запрос возвратит нуль.
static TemporalQuery<LocalTime> localTime()
LocalTime возврат нуля, если не найденный. Это возвращает a TemporalQuery это может использоваться, чтобы запросить временный объект в течение местного времени. Запрос возвратит нуль, если временный объект не может предоставить местное время.
Реализация запроса исследует NANO_OF_DAY поле и использование это, чтобы создать a LocalTime.
Метод ZoneOffset.from(TemporalAccessor) может использоваться в качестве a TemporalQuery через ссылку метода, LocalTime::from. Этот запрос и LocalTime::from возвратит тот же самый результат, если временный объект будет содержать время. Если временный объект не будет содержать время, то ссылка метода выдаст исключение, тогда как этот запрос возвратит нуль.
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92