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