Интерфейс TemporalQuery<R>
- Параметры типа:
R- the type returned from the query
- Функциональный интерфейс:
- Это функциональный интерфейс, поэтому его можно использовать в качестве целевого типа при присваивании лямбда-выражения или ссылки на метод.
@FunctionalInterface public interface TemporalQuery<R>
Запросы — важный инструмент для извлечения информации из объектов времени. Они позволяют вынести процесс выполнения запросов во внешний код, предоставляя возможность использовать различные подходы в соответствии с шаблоном проектирования «стратегия». Например, запрос может проверять, является ли дата днём перед 29 февраля високосного года, или вычислять количество дней до вашего следующего дня рождения.
Интерфейс TemporalField предоставляет другой механизм выполнения запросов к объектам времени. Этот интерфейс ограничен возвратом long. В отличие от него, запросы могут возвращать значения любого типа.
Существует два равнозначных способа использования TemporalQuery. Первый — непосредственно вызвать метод этого интерфейса. Второй — использовать TemporalAccessor.query(TemporalQuery):
// these two lines are equivalent, but the second approach is recommended result = thisQuery.queryFrom(temporal); result = temporal.query(thisQuery);Рекомендуется использовать второй подход,
query(thisQuery), поскольку такой код гораздо легче читать. Наиболее распространёнными реализациями являются ссылки на методы, например 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 result = thisQuery.queryFrom(temporal); result = temporal.query(thisQuery);Рекомендуется использовать второй подход,
query(thisQuery), поскольку такой код гораздо легче читать.- Требования к реализации:
- Реализация должна принять входной объект и выполнить к нему запрос. Реализация определяет логику запроса и отвечает за документирование этой логики. Для определения результата можно использовать любой метод объекта
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.