为什么java.time.Period
没有实现java.lang.Comparable
接口(interface)?
简单的问题,但答案可能不那么简单:其他常用的时间量java.time.Duration
确实实现Comparable
,所以我认为设计师可能会考虑过它,但决定不这样做。
最佳答案
因为只有几个月可以标准化()
,而不是几天。 IE。 P30D
可能小于、等于或大于 P1M
,具体取决于它是否应用于一月、二月或三月。
实际上,equals
没有进行任何标准化,因此 P30D
不等于 P1M
。甚至 P1Y
也不等于 P12M
,这可能会令人惊讶。
如果您需要比较时期,您需要一种方法来处理 - 在某些情况下 - 您无法决定。或者您使用 30 天的标准月份,这是财务计算中常见的简化。
顺便说一句:这确实应该在 Period
和 #normalized()
的 JavaDoc 中。
关于java - 为什么期间不具有可比性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35192249/