Интерфейс 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, 2025, 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/25/docs/api/java.base/java/time/temporal/TemporalQuery.html