Интерфейс TemporalQuery<R>
- Параметры типа:
-
R- тип, возвращаемый запросом
- Функциональный интерфейс:
- Это функциональный интерфейс и поэтому может быть использован в качестве целевого назначения лямбда-выражения или ссылки на метод.
@FunctionalInterface public interface TemporalQuery<R>
Стратегия для запроса временного объекта.
Запросы — это ключевой инструмент для извлечения информации из временных объектов. Они существуют для внешней организации процесса запроса, позволяя использовать разные подходы в соответствии со стратегическим шаблоном проектирования. Примерами могут быть запрос, проверяющий, является ли дата днем перед 29 февраля в високосном году, или вычисление количества дней до следующего дня рождения.
Интерфейс TemporalField предоставляет другой механизм для запроса временных объектов. Этот интерфейс ограничен возвращением long. В отличие от него, запросы могут возвращать любой тип.
Существует два эквивалентных способа использования 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. Дополнительные общие запросы предоставляются как статические методы в TemporalQueries.
- Требования к реализации:
- Этот интерфейс не накладывает ограничений на изменяемость реализаций, однако неизменяемость настоятельно рекомендуется.
- С:
- 1.8
Методы
| Модификатор и тип | Метод и описание |
|---|---|
R |
queryFrom(TemporalAccessor temporal) Запрашивает указанный временной объект. |
Методы
queryFrom
R queryFrom(TemporalAccessor temporal)
Запрашивает указанный временной объект.
Этот запрос направлен на указанный временной объект для возврата объекта, используя логику, заложенную в реализующем классе. Примерами могут быть запрос, проверяющий, является ли дата днем перед 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- запрашиваемый временной объект, не null - Возвращает:
- запрошенное значение, может вернуть null, чтобы указать, что не найдено
- Бросает:
-
DateTimeException- если запрос не удается -
ArithmeticException- если происходит переполнение числовых значений
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.