为什么java.time.Period
没有实现java.lang.Comparable
接口?
简单的问题,但答案可能不那么简单:其他常用的时间量java.time.Duration
确实实现Comparable
,所以我假设设计师可能会想到关于它,但决定反对它。
答案 0 :(得分:10)
因为只有几个月可以是normalized()
,而不是几天。即P30D
可能小于,等于或大于P1M
,具体取决于它是否应用于例如1月,2月或3月。
实际上,equals
没有进行任何规范化,因此P30D
不等于P1M
。即使P1Y
不等于P12M
,也可能会令人惊讶。
如果你需要比较句号,你需要一种方法来处理 - 在某些情况下 - 你无法决定。或者您使用30天的标准月份,这是财务计算中的常见简化。
顺便说一句:这应该属于Period
和#normalized()
的JavaDoc。