为什么YearMonth
类不是临时的(接口),而MonthDay
不是临时的?
这似乎很奇怪,因为两个类的含义几乎相同。
我可能建议不要在使用Temporal接口的任何地方使用MonthDay,但是也许有更好的理由。
最佳答案
这是阅读MonthDay
文档的问题,这要感谢davidxxx和其他人找到正确的报价:
此类实现TemporalAccessor
而不是Temporal
。这是
因为无法定义2月29日有效还是无效
并非没有外部信息,就无法实施
正负。与此相关,MonthDay
仅提供对查询的访问
并设置字段MONTH_OF_YEAR
和DAY_OF_MONTH
。
您可以从Temporal
的文档中结合以下代码阅读:
这是日期,时间和偏移量对象的基本接口类型,
足够完整,可以使用加号和减号进行操作。
他们不想为MonthDay
定义加号和减号。因为例如不清楚2月28日加1天是什么。某些年份是2月29日,其他年份是3月1日。
相比之下,向YearMonth
添加一个月或一年总会得到明确且毫不奇怪的结果。
链接
Temporal
MonthDay