来自Calendar.before(Object when)
的javadoc:
返回此Calendar是否表示指定Object表示的时间之前的时间。此方法等同于:
compareTo(when) < 0
当且仅当何时是Calendar实例。否则,该方法返回false。
为什么它接受一个Object,如果有人传递了一个不是Calendar实例的东西,它会返回false?为什么不接受Calendar实例?这让我在很长一段时间内都在关注功能的不正确结果。
答案 0 :(得分:7)
我认为没有特别的理由。不幸的是,java.util.Calendar
有一些我们不得不忍受的设计问题。
答案 1 :(得分:1)
请注意,该方法不是final
(并且类本身是抽象的)。随意将其子类化并提供一个版本,该版本将采用Java的Date
或JodaTime的LocalDate
。如果您这样看,那么JDK的作者提供这样的通用解决方案是非常有远见的。
答案 2 :(得分:-1)
我认为这可能是通过在before()方法中使用多态行为来提供封装。