Java 为什么YearMonth是临时的而MonthDay不是临时的?
为什么Java 为什么YearMonth是临时的而MonthDay不是临时的?,java,java-time,Java,Java Time,为什么YearMonth类是临时的(接口),而MonthDay不是临时的 这似乎很奇怪,因为这两个类的含义几乎相同 我可能会建议MonthDay从不在使用临时接口的任何地方使用,但可能有更好的理由。这是阅读MonthDay的文档的问题,感谢davidxxx和其他人找到正确的引用: 此类实现了TemporalAccessor,而不是Temporal。这是 因为无法确定2月29日是否有效 没有外部信息,就无法实施 正/负。与此相关,MonthDay仅提供对查询的访问 并设置字段年的月和月的日 您可以
YearMonth
类是临时的(接口),而MonthDay
不是临时的
这似乎很奇怪,因为这两个类的含义几乎相同
我可能会建议MonthDay从不在使用临时接口的任何地方使用,但可能有更好的理由。这是阅读MonthDay的文档的问题,感谢davidxxx和其他人找到正确的引用: 此类实现了
TemporalAccessor
,而不是Temporal
。这是
因为无法确定2月29日是否有效
没有外部信息,就无法实施
正/负。与此相关,MonthDay
仅提供对查询的访问
并设置字段年的月
和月的日
您可以结合Temporal
文档中的这段代码来阅读:
这是日期、时间和偏移量对象的基本接口类型
足够完整,可以使用加号和减号进行操作
他们不想为MonthDay
定义加号和减号。因为举例来说,我们不清楚2月28日加1天是什么。有些年份是2月29日,有些年份是3月1日
相比之下,将一个月或一年添加到YearMonth
中总是会得到一个定义明确且不令人惊讶的结果
链接
MonthDay
:“虽然组合是连续的,从几天到几月,但组合没有足够的信息来定义月日的有效值范围。”,我只引用了文件中的一段话,但在这一点上并不是详尽无遗的。这一点在MonthDay
中也有详细说明。我用它更新了。