-
- 参数类型
-
R
- 查询返回的类型
- Functional Interface:
- 这是一个功能接口,因此可以用作lambda表达式或方法引用的赋值目标。
@FunctionalInterfacepublic interface TemporalQuery<R>
查询时态对象的策略。查询是从临时对象中提取信息的关键工具。 它们的存在是为了使查询过程外化,允许根据策略设计模式采用不同的方法。 示例可能是查询日期是否是闰年2月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)
查询指定的时态对象。这将查询指定的时态对象,以使用实现类中封装的逻辑返回对象。 示例可能是查询日期是否是闰年2月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)
,因为在代码中读取要清楚query(TemporalQuery)
。- 实现要求:
- 实现必须获取输入对象并进行查询。 该实现定义了查询的逻辑,并负责记录该逻辑。 它可以使用
TemporalAccessor
上的任何方法来确定结果。 不得更改输入对象。输入时间对象可以在除ISO之外的日历系统中。 实现可以选择记录与其他日历系统的兼容性,或者通过
querying the chronology
拒绝非ISO时态对象。可以从多个线程并行调用此方法。 调用时必须是线程安全的。
- 参数
-
temporal
- 要查询的时态对象,而不是null - 结果
- 查询的值,可能返回null表示未找到
- 异常
-
DateTimeException
- 如果无法查询 -
ArithmeticException
- 如果发生数字溢出
-
-