Интерфейс 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 |
Выполняет запрос для указанного временного объекта. |
Подробное описание методов
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, 2023, 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.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/time/temporal/TemporalQuery.html