TemporalQuery (Java Platform SE 8 ) (original) (raw)

Strategy for querying a temporal object.

Queries are a key tool for extracting information from temporal objects. They exist to externalize the process of querying, permitting different approaches, as per the strategy design pattern. Examples might be a query that checks if the date is the day before February 29th in a leap year, or calculates the number of days to your next birthday.

The TemporalField interface provides another mechanism for querying temporal objects. That interface is limited to returning a long. By contrast, queries can return any type.

There are two equivalent ways of using a TemporalQuery. The first is to invoke the method on this interface directly. The second is to use TemporalAccessor.query(TemporalQuery):

// these two lines are equivalent, but the second approach is recommended temporal = thisQuery.queryFrom(temporal); temporal = temporal.query(thisQuery);

It is recommended to use the second approach, query(TemporalQuery), as it is a lot clearer to read in code.

The most common implementations are method references, such asLocalDate::from and ZoneId::from. Additional common queries are provided as static methods in TemporalQueries.