![](/img/trans.png)
[英]Why @Autowired raises UnsatisfiedDependencyException, even the class does not implement any interface?
[英]why ZonedDateTime class does not implement TemporalAdjuster interface
我目前正在研究java.time API,我注意到java.time中的大多數類(例如LocalDate
, OffsetDateTime
)實現了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.