簡體   English   中英

為什么ZonedDateTime類沒有實現TemporalAdjuster接口

[英]why ZonedDateTime class does not implement TemporalAdjuster interface

我目前正在研究java.time API,我注意到java.time中的大多數類(例如LocalDateOffsetDateTime )實現了TemporalAdjuster接口,但ZonedDateTime卻沒有。 我只是想知道為什么會這樣? 為什么要排除ZonedDateTime實現TemporalAdjuster接口?

TemporalAdjuster通過TemporalAdjuster.adjustInto(Temporal)方法更改另一個時態對象。 Temporal接口允許通過Temporal.with(TemporalField, long)更改各個字段。

LocalDate可以實現TemporalAdjuster因為它的狀態完全由時間字段(年,月,日)組成。 因此, LocalDate.adjustInto(Temporal)的實現可以調用Temporal.with(TemporalField, long)傳遞年,月和日(它實際上使用ChronoField.EPOCH_DAY ,它是年,月和日的組合)。

OffsetDateTime可以實現TemporalAdjuster因為它的狀態也完全由時間字段組成(年,月,日,小時,分鍾,秒,納秒和偏移秒)。 因此, OffsetDateTime.adjustInto(Temporal)的實現再次可以調用Temporal.with(TemporalField, long)逐個傳遞字段。

ZonedDateTime無法實現TemporalAdjuster因為其狀態包括ZoneId ,它不是時間字段,因此無法傳遞給Temporal.with(TemporalField, long) 即。 無法通過Temporal接口更改時態類的時區。

鑒於ZonedDateTime包含所有可能的日期時間字段,此限制在實踐中幾乎沒有影響。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM